如何使用 ssh 从 Windows 客户端上的 python 程序在 Linux 服务器上调度"at"作业或"cron 作业"



我正试图使用os.system((从Windows 10上的python应用程序计划一个作业在linux服务器上运行。以下代码执行了,但未能计划该作业。

os.system('ssh myadmin@mnop.com "at 09:00 {}".format("iostat > /home/myadmin/t.txt")')
os.system('ssh myadmin@mnop.com  "crontab 0 9 9 1 * /home/myadmin.msg.sh"')

我的目标是安排一次执行。谢谢你的建议。

at的唯一参数是时间;然后它从标准输入中读取命令。类似地,crontab从标准输入读取cron调度,而不是作为命令的参数。

import subprocess
subprocess.run(['ssh', 'myadmin@mnop.com', 'at 09:00'],
text=True, check=True,
input="iostat > /home/myadmin/t.txtn")
subprocess.run(['ssh', 'myadmin@mnop.com', 'crontab'],
text=True, check=True,
input='0 9 9 1 * /home/myadmin/msg.shn')

请注意,后者将替换用户的任何现有crontab。我纠正了你在评论中指出的拼写错误。

还请注意,我们是如何切换到subprocess.run而不是os.system的,如后者的文档中所建议的那样。我进行了重构以避免必须使用shell=True;也许还可以参见';shell=真';子过程

最新更新