我的Python代码中有一个crontab条目,用于描述应在指定时间在UNIX远程服务器中调度哪个脚本。
我正在编写一个Python脚本,它将使用Paramiko连接到ssh,它将转到远程服务器中指定的crontab文件路径 - >打开crontab文件 - >添加在文件末尾的Python脚本中指定的crontab条目(在新行上) - >保存&退出crontab文件。
请告诉我如何实现这一目标。
P.S。 :我已经知道如何使用Paramiko连接到服务器。刚刚停留在远程服务器的文件处理部分。
答案 0 :(得分:0)
我不知道Paramiko究竟是如何工作的,但如果你可以使用shell,你可以简单地执行:
echo "new line" >> cron_file
此命令会将字符串new line
添加为文件cron_file
的新行。
答案 1 :(得分:0)
crontab -l 2>/dev/null| cat - <(echo "your new crontab entry here") | crontab -
crontab -l
将当前的crontab输出到stdout。
2>/dev/null
[可选]抑制来自crontab -l的错误消息。如果用户没有crontab条目,您将收到错误消息。但这不是问题。
cat - <(echo "your crontab entry here")
-
从管道(crontab -l)获取输入并将其用作cat的第一件事。然后其余的将新的crontab条目附加到stdout。 <()语法获取命令的输出并将其存储在临时文件中。
crontab -
这会将crontab条目设置为stdin(由于管道,它是以前命令中的所有stdout。)
编辑:看起来你需要用bash -c
包装命令才能让管道正常工作。请参阅此stackoverflow entry。
或者,您可以向paramiko发送一系列命令。只要注意并发性。
crontab -l > /tmp/current.cron
echo "your crontab entry here" >> /tmp/current.cron
crontab /tmp/current.cron
另一种选择是:
crontab <(cat <(crontab -l 2>/dev/null) <(echo "your new crontab entry"))