可能是一個愚蠢的問題,但在運行時失敗....subprocess.popen似乎從crontab中
我從crontab中運行一個腳本,只是ssh和運行一個命令,並將結果保存在一個文件中。
,這似乎是失敗的subprocess.popen
這裏的功能是功能
def _executeSSHCommand(sshcommand,user,node):
'''
Simple function to execute an ssh command on a remote node.
'''
sshunixcmd = '/usr/bin/ssh %[email protected]%s \'%s\'' % (user,node,sshcommand)
process = subprocess.Popen([sshunixcmd],
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
process.wait()
result = process.stdout.readlines()
return result
當它在命令行中運行,它執行正確,從cron似乎無法與消息
這裏的crontab項 02 * * * * /home/matt/scripts/check-diskspace.py >> /home/matt/logs/disklog.log
這裏是錯誤
Sep 23 17:02:01 timmy CRON[13387]: (matt) CMD (/home/matt/scripts/check-diskspace.py >> /home/matt/logs/disklog.log)
Sep 23 17:02:01 timmy CRON[13386]: (CRON) error (grandchild #13387 failed with exit status 2)
我要盲目試圖找到確切的地方,我已經走錯了。
任何想法?
您的ssh命令是否需要任何環境變量才能正常工作?請記住,cron在一個簡化的環境中運行作業,幾乎沒有默認定義的任何環境變量。 – unutbu 2010-09-23 16:05:56
特別是,'ssh'實例如何進行身份驗證?如果您使用的是'ssh-agent',那麼您需要獲取傳播到cronjob環境中的必要環境變量。 – llasram 2010-09-23 16:09:32
每當cron出錯時,我發現將stderr(在Popen命令和crontab項中)重定向到一個文件,以獲取有關失敗的更多線索。 – unutbu 2010-09-23 16:11:17