python - 在通过crontab调用的脚本中运行ssh/rsync命令
我遇到了一个很奇怪的问题,搞不清楚怎么回事。
当我在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搜索引擎更新同步到远程服务器,然后第二行代码是用来在远程服务器上强制搜索引擎把更新应用到生产环境中。
我已经安装了fabric(所以可以在本地执行命令),但为了不需要再写一个文件,我希望能用一行代码在远程服务器上执行sudo命令。
有没有人能帮我解决这个问题?