python - 在通过 crontab 调用的脚本中运行 ssh/rsync 命令

标签 python ssh rsync fabric

我有一个非常奇怪的问题,我似乎无法弄清楚。

当我在 SSH 终端(putty)内执行包含以下几行的 python 脚本时,它工作正常。但是当我通过 crontab 甚至 nohup python myscript >/dev/null 2>&1& 运行脚本时,它似乎没有执行这些命令。

subprocess.call('rsync -avr /path/to/folder/. --include "delta.*" --exclude "*" -e "ssh -o StrictHostKeyChecking=no -i /path/to/key.pem" ec2-user@'+server+':/path/to/folder/', shell=True)
local('ssh -t -o StrictHostKeyChecking=no -i /path/to/key.pem ec2-user@'+server+' "sudo /usr/bin/indexer -c /path/to/sphinx.conf --merge main delta --rotate"')

基本上,上述所有操作都是将包含新 sphinx 搜索引擎更新的文件夹同步到远程服务器,然后第二行运行远程 ssh 命令以强制搜索引擎将更新轮换到生产中。

我确实安装了 Fabric(因此是本地命令),但为了避免必须创建第二个文件,我希望一行代码可以允许我在远程服务器上执行 sudo 命令。

有人可以帮我吗?

最佳答案

我找到了答案,对于后台运行的脚本中的 ssh 命令,您需要使用 -t -t 来强制使用伪终端。

引用:

Pseudo-terminal will not be allocated because stdin is not a terminal

关于python - 在通过 crontab 调用的脚本中运行 ssh/rsync 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15593242/

相关文章:

git - 部署到 Digital Ocean 时 Dokku 推送导致管道破裂

git - 在 Linux 上为 git 私有(private) SSH key 设置自定义路径

python os.system 似乎无缘无故挂起

linux - 使用 bash rsync 远程站点

python - 将 Python Systemd 输出记录到日志文件

python - 在 Ruby/Python 中可视化 x、y、z 坐标?

python - 更新与终端尺寸相关的窗口

python - 无法显示图像 HSI 转换为 RGB python

linux - Rsync——排除目录但包括该目录中的特定子目录

python - 从 python subprocess.call 调用 rsync