创建此简单脚本以在 Cisco(网真)CTS1300、1000 和 3000 编解码器上执行重启。目标是通过使用 cron 每周重新启动这些单元。我正在使用 Cygwin,这是期望脚本:
#!/usr/bin/expect -f
spawn ssh AdminUser@123.123.123.123
expect "*?assword:*"
send -- "MyPassword\r"
expect "*admin:*"
"send -- "utils system restart\r"
expect -exact "Are you sure you want to perform a System Restart ?\r
Enter \"yes\" to Restart the System or any other key to abort\r
continue: "
send -- "yes\r"
expect "*admin:*"
send -- "quit\r"
expect eof
输出是:
superuser@SUPERPC ~/ctspsswd
./restartall2
spawn ssh AdminUser@123.123.123.123
AdminUser@123.123.123.123's password:
Command Line Interface is starting up, please wait ...
Welcome to the TelePresence Command Line Interface (version 1.1)
admin:utils system restart
Are you sure you want to perform a System Restart ?
Enter "yes" to Restart the System or any other key to abort
continue: s
The System Restart has been aborted
admin:quit
Connection to 123.123.123.123 closed.
出于某种奇怪的原因,它只发送“s”,这会中止系统重新启动。
我尝试使用#!/bin/bash
类型脚本和输出是相似的。
我尝试使用通配符来表示期望"*continue:*"
并且仍然是相似的输出。
我尝试使用autoexpect
并且发生了同样的事情。Autoexpect 脚本看起来与我的脚本非常相似,只是对我输入的每个字符更具体。
我尝试yes
在发送 utils 系统重启后立即发送,结果简直等同于\r
.
有什么我想念的吗?否则,我将创建一个脚本,用于该yes
部分的交互。