相关疑难解决方法(0)

期望脚本自动telnet登录

我一直在尝试创建一个期望脚本,通过telnet自动登录我的设备

如果expect命令没有多种可能性,则脚本工作正常,登录到设备.

#!/usr/bin/expect
set timeout 20
set ip [lindex $argv 0]
set port [lindex $argv 1]
set user [lindex $argv 2]
set password [lindex $argv 3]

spawn telnet $ip $port
expect "'^]'." sleep .1;
send "\r";
sleep .1;
expect   "login:"
send "$user\r"
expect "Password:"
send "$password\r";
interact
Run Code Online (Sandbox Code Playgroud)

上面的脚本工作正常,并在我传递正确的参数时成功登录.但是,一旦我向expect命令添加了额外的分支(用于错误处理),脚本就会在提示符下卡住.login:一段时间后它会打印脚本错误 任何帮助?下面的错误脚本.

#!/usr/bin/expect
set timeout 20
set ip [lindex $argv 0]
set port [lindex $argv 1]
set user [lindex $argv 2]
set password [lindex $argv 3]

spawn telnet $ip $port …
Run Code Online (Sandbox Code Playgroud)

telnet expect

8
推荐指数
1
解决办法
4万
查看次数

在期望脚本中等待提示

我需要一个expect脚本来等待已发出的命令完成,然后从中注销telnet.这是脚本:

spawn telnet host
send "username\r"
send "password\r"
sleep 3
send "custom_command\r"
while {???}
{
    sleep 1
}
send "logout\r"
expect eof
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么说的部分是???.我基本上只需要等待prompt显示,一旦显示,脚本应该结束.我猜它应该是这样的[gets line != "prompt>" ].

prompt telnet expect

4
推荐指数
3
解决办法
3万
查看次数

标签 统计

expect ×2

telnet ×2

prompt ×1