Единственный аргумент at
- время; Затем он считывает команды со стандартного ввода. Аналогично, crontab
считывает расписание cron из стандартного ввода, а не как параметры команды.
import subprocess
subprocess.run(['ssh', 'myadmin@mnop.com', 'at 09:00'],
text=True, check=True,
input="iostat > /home/myadmin/t.txt\n")
subprocess.run(['ssh', 'myadmin@mnop.com', 'crontab'],
text=True, check=True,
input='0 9 9 1 * /home/myadmin/msg.sh\n')
Обратите внимание, что последний заменит любой существующий crontab
для пользователя. Я исправил опечатку, на которую вы указали в комментарии.
Обратите внимание, как мы переключаемся на subprocess.run
вместо os.system
, как рекомендовано в документации для последнего. Я сделал рефакторинг, чтобы не использовать shell=True
; возможно, см. также Фактическое значение 'shell = True' в подпроцессе