从cron bash脚本运行时,ssh无法执行远程命令 – 从CLI工作
我有一个脚本,写在bash中,从cron运行。 它所做的第一件事情之一是SSH到远程主机,并检索目录中的文件列表。 从命令行运行时一切正常,但不是从cron运行。 脚本部分最初看起来像这样: FILES=$($SSH_BINARY -i $SSH_KEY $SSH_USER@$REMOTE_HOST "ls $REMOTE_DIRECTORY") echo "Got files = $FILES" 我在该行上面添加了一个echo语句(如下所示)来certificate它不是path或variables问题: echo "$SSH_BINARY -i $SSH_KEY $SSH_USER@$REMOTE_HOST \"ls $REMOTE_DIRECTORY\"" 如果我把结果输出行并作为相同的用户cron将(根)运行,它没有问题。 认为它可能与分配给variables有关,我修改了FILES =行来读取(因此,把输出直接放到我的last_run_output文件中): $SSH_BINARY -vv -i $SSH_KEY $SSH_USER@$REMOTE_HOST "ls $REMOTE_DIRECTORY" cron条目如下所示: 34 * * * * /root/path/to/my/script/get_logs.sh > /root/path/to/last_run_output 2>&1 所以,除了PATH,variables赋值和权限问题之外,我开始在ssh中使用debugging标志。 我从命令行运行一次,然后从cron运行,并比较输出。 以下是差异中的一些亮点: 侧面是不成功的尝试,+侧面是成功的尝试,在cron之外运行。 @@ -87,9 +77,7 @@ debug1: Remote: X11 forwarding […]