我正在运行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这一事实有点令人生厌。

08-24 19:39