Closed cars10 closed 3 years ago
I don't think anybody tried to run in with cron. Error log is quite clear - it require real terminal. You might also try to set TERM
.
I presume you get it working.
@AcidWeb I have the same issue, I'm running CurseBreaker periodically in a systemd service. This actually worked fine before this commit: 302b46c9481c9e21bbb4560696286c91d6ec4bc1
On newer versions, it looks like this:
Nov 01 19:21:24 Markus-Desktop systemd[1015]: Started WoW Retail addon updater.
Nov 01 19:21:24 Markus-Desktop python3[75375]:
Nov 01 19:21:24 Markus-Desktop python3[75345]: Warning: Output is not a terminal (fd=1).
Nov 01 19:21:24 Markus-Desktop python3[75345]: Warning: Input is not a terminal (fd=0).
Nov 01 19:21:24 Markus-Desktop python3[75345]: ───────────────────────────── CurseBreaker v3.14.1 ─────────────────────────────
Nov 01 19:21:24 Markus-Desktop python3[75345]: Automatic update of all addons will start in 5 seconds.
Nov 01 19:21:24 Markus-Desktop python3[75345]: Press any button to enter interactive mode.
Nov 01 19:21:25 Markus-Desktop python3[75345]: ╭───────────────────── Traceback (most recent call last) ──────────────────────╮
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ /mnt/data_ssd/Games/world-of-warcraft/drive_c/Program Files (x86)/World of │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ Warcraft/_retail_/CurseBreaker.py:876 in <module> │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 873 │ │ os.chdir(os.path.dirname(os.path.abspath(sys.executable))) │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 874 │ set_terminal_title(f'CurseBreaker v{__version__}') │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 875 │ app = TUI() │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ ❱ 876 │ app.start() │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ /mnt/data_ssd/Games/world-of-warcraft/drive_c/Program Files (x86)/World of │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ Warcraft/_retail_/CurseBreaker.py:134 in start │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 131 │ │ │ if not self.headless: │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 132 │ │ │ │ self.console.print('Automatic update of all addons wil │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 133 │ │ │ │ │ │ │ │ 'Press any button to enter interact │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ ❱ 134 │ │ │ kb = KBHit() │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 135 │ │ │ starttime = time.time() │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 136 │ │ │ keypress = None │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 137 │ │ │ while True: │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ /home/markus/Applications/CurseBreaker/CB/Compat.py:19 in __init__ │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 16 │ def __init__(self): │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 17 │ │ if system != 'Windows': │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 18 │ │ │ self.fd = sys.stdin.fileno() │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ ❱ 19 │ │ │ self.new_term = termios.tcgetattr(self.fd) │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 20 │ │ │ self.old_term = termios.tcgetattr(self.fd) │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 21 │ │ │ self.new_term[3] = (self.new_term[3] & ~termios.ICANON & ~t │
Nov 01 19:21:25 Markus-Desktop python3[75345]: │ 22 │ │ │ termios.tcsetattr(self.fd, termios.TCSAFLUSH, self.new_term │
Nov 01 19:21:25 Markus-Desktop python3[75345]: ╰──────────────────────────────────────────────────────────────────────────────╯
Nov 01 19:21:25 Markus-Desktop python3[75345]: error: (25, 'Inappropriate ioctl for device')
systemd service:
[Unit]
Description=WoW Retail addon updater
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/mnt/data_ssd/Games/world-of-warcraft/drive_c/Program Files (x86)/World of Warcraft/_retail_/
ExecStart=/usr/bin/python3 CurseBreaker.py headless
[Install]
WantedBy=multi-user.target
Thanks @z0n. I will try to workaround it for headless mode.
Short feedback, it's working now!
Running via cron
also works now. Thanks!
Hi, i tried running a CurseBreaker cronjob for daily addon updates. Sadly it does not work:
Cron command:
Cron systemd service log:
addon.log:
Am i missing something?