【发布时间】:2015-07-18 17:46:51
【问题描述】:
所以我有一个简单的脚本,可以登录到网络设备,然后进行交互,允许用户调用各种宏。我在下面有一个示例 - 用户在设备中,点击“!p”,然后脚本希望用户输入命令。
一切正常,除了程序没有回显用户输入的内容,因此他们不可能纠正错误输入。
我目前的解决方案是stty echo 在expect_user 之前和stty -echo 之后。但是在这个解决方案中,退格键和箭头键按下被捕获,因此用户仍然无法更正他们的错误输入。
我不确定如何解决这个问题,但我认为生成的程序控制了 STDOUT,所以当调用 expect_user 时,它在后台。
set hostname 10.0.0.1
set password 1234qwer
spawn ssh -o StrictHostKeyChecking=no $hostname
expect {
"assword:" {
send "$password\r"
expect "#"
}
}
interact {
"!p" {
send_user "\nInput command: "
expect_user -re "(.*)\r" {
puts "\n$expect_out(1,string)"
}
}
}
【问题讨论】: