期望脚本发送重新启动从未由计算机处理

时间:2019-07-08 22:35:18

标签: bash ssh tcl expect

我写了一个Expect脚本,它将ssh到树莓派中,然后是定制的无线电设备。它将在文件系统上md5一个文件,然后将其与已知良好的md5进行比较。然后它将发出命令以重新启动设备。问题是无线电设备从不实际处理“发送“ reboot \ r”“命令。 Expect将其发送到正确的Expect_id,但是什么也没发生。

我尝试在脚本中四处移动。有趣的是,将其放置在md5sum调用之上后,它将可以工作。如果在md5sum调用之后的任何时间进行,它将永远无法工作。我尝试使用重新启动命令的完全限定路径,而没有使用。都不起作用。请参见下面的代码。定制无线电设备正在运行旧版本的Linux内核。我已经编写了2到3个其他脚本,这些脚本可以在这些电台上运行,并在整个脚本中定期重新启动它们。但是,对于此特定脚本,它根本不起作用(取决于代码行的位置)。

send "md5sum /root/BS5000/bs_config.xml\r\n"
sleep 3

send "/sbin/reboot\r"

这里没有错误消息,它什么也不做。它应该发出重新启动命令。

1 个答案:

答案 0 :(得分:0)

您似乎确实缺少了的“期望”部分-您确实应该尝试这样写:

spawn something
expect something
send something
expect something
...

所以:

send "md5sum /root/BS5000/bs_config.xml\r"
expect "*"
send "/sbin/reboot\r"
expect eof

如果您发现需要添加睡眠,则您的预期模式不正确。在开发期望脚本时,请使用expect -d运行它,或在代码顶部添加exp_internal 1