首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Python编辑远程UNIX服务器中存在的crontab文件

如何使用Python编辑远程UNIX服务器中存在的crontab文件
EN

Stack Overflow用户
提问于 2017-10-04 19:48:04
回答 2查看 4.1K关注 0票数 0

我的Python代码中有一个crontab条目,用于描述应在指定时间在UNIX远程服务器中调度哪个脚本。

我正在写一个Python脚本,它将连接到ssh使用帕拉米科,它将转到指定的crontab文件路径在远程服务器->打开crontab文件->添加指定的crontab条目在Python脚本的末尾(在新行上) ->保存并退出crontab文件。

请告诉我如何才能做到这一点。

附言:我已经知道如何使用Paramiko连接到服务器。就在远程服务器的文件处理部分。

EN

回答 2

Stack Overflow用户

发布于 2017-10-04 20:01:32

代码语言:javascript
运行
复制
crontab -l 2>/dev/null| cat - <(echo "your new crontab entry here") | crontab -

解释

代码语言:javascript
运行
复制
crontab -l

将当前crontab输出到stdout。

代码语言:javascript
运行
复制
2>/dev/null

可选抑制来自crontab -l的错误消息。如果没有用户的crontab条目,您将收到一条错误消息。但这不是问题。

代码语言:javascript
运行
复制
cat - <(echo "your crontab entry here")

-从管道(crontab -l)获取输入,并将其用作cat的第一件事。然后,其余部分将新的crontab条目附加到stdout。<()语法接受内部命令的输出,并将其存储在一个临时文件中。

代码语言:javascript
运行
复制
crontab -

这会将crontab条目设置为stdin (多亏了管道,它是前面命令的所有stdout )。

编辑:看起来你需要用bash -c包装命令才能让管道工作。请参阅此stackoverflow entry

或者,您可以向paramiko发送一系列命令。但要注意并发性。

代码语言:javascript
运行
复制
crontab -l > /tmp/current.cron
echo "your crontab entry here" >> /tmp/current.cron
crontab /tmp/current.cron

另一种选择是:

代码语言:javascript
运行
复制
crontab <(cat <(crontab -l 2>/dev/null) <(echo "your new crontab entry"))
票数 1
EN

Stack Overflow用户

发布于 2017-10-04 19:59:17

我不知道Paramiko是如何工作的,但是如果你可以使用shell,你可以简单地执行:

代码语言:javascript
运行
复制
echo "new line" >> cron_file

此命令将在文件cron_file中添加一个字符串new line作为新行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46564064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档