我正在运行crontab中的一个脚本,它将只是ssh和运行一个命令,并将结果存储在一个文件中。
似乎失败的函数是subprocess.popen
。
下面是python函数:
def _executeSSHCommand(sshcommand,user,node):
'''
Simple function to execute an ssh command on a remote node.
'''
sshunixcmd = '/usr/bin/ssh %s@%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)
我要盲目地去寻找我到底错在哪里了。有什么想法吗?
最佳答案
您可能需要将-i参数传递给ssh,以告诉ssh使用特定的密钥文件。问题是,您的环境没有设置为告诉ssh要使用哪个密钥。
你在这里使用python这一事实有点令人生厌。