为什么 cron 在 Cisco 路由器上通过 ssh 运行远程命令会被中断?

为什么 cron 在 Cisco 路由器上通过 ssh 运行远程命令会被中断?

我的任务是确保如果工作中的某个特定服务器发生故障,我们会立即知道。因为我不在那里(实际上没有人),所以我编写了一个脚本在我的家庭路由器 linux 盒子(运行 Alpine Linux)上运行,以连接到我们的工作 Cisco 路由器并 ping 服务器(因为服务器不直接可通过互联网访问)。

我在 Cisco 路由器上设置了无密码 rsa,这是我的脚本的主要部分:

ssh user@work_router 'ping Server_IP' 2>/dev/null | grep -q ' 0 percent'

if [[ $? == 0 ]]
then
    #It's not responding
else
    #Everything is fine
fi

这些脚本在手动运行时工作得很好,但是当我告诉 cron 运行它时,它就停止工作了。将 ssh 输出重定向到日志文件,我发现这就是问题所在:

手动运行时,该命令会给出以下输出:

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to SERVER_IP, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

当 cron 运行时,输出如下:

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to SERVER_IP, timeout is 2 seconds:
!

是否有某种原因导致 ping 或 ssh 在完成运行之前被中断?

编辑:

使用“ssh -v -v”从终端运行脚本:

http://pastebin.com/YXxbHq3t

使用 'ssh -v -v' 使用 cron 运行脚本:

http://pastebin.com/wkYiAWsE

这两个文件之间的 vimdiff 显示了一些有趣的差异,但这超出了我的能力范围。谁能告诉我发生了什么事吗?

相关内容