我的Python代码中有一个crontab条目,用于描述应在指定时间在UNIX远程服务器中调度哪个脚本。
我正在写一个Python脚本,它将连接到ssh使用帕拉米科,它将转到指定的crontab文件路径在远程服务器->打开crontab文件->添加指定的crontab条目在Python脚本的末尾(在新行上) ->保存并退出crontab文件。
请告诉我如何才能做到这一点。
附言:我已经知道如何使用Paramiko连接到服务器。就在远程服务器的文件处理部分。
发布于 2017-10-04 20:01:32
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"))
发布于 2017-10-04 19:59:17
我不知道Paramiko是如何工作的,但是如果你可以使用shell,你可以简单地执行:
echo "new line" >> cron_file
此命令将在文件cron_file
中添加一个字符串new line
作为新行。
https://stackoverflow.com/questions/46564064
复制相似问题