Linux expect-telnet连接
我正在尝试创建一个简单的telnet连接脚本。 我生成telnet进程。根据版本的不同,它可能要求输入密码,也可能不要求输入密码 之后,它要求用户名和密码以及规则接受。成功登录后,它会提示输入命令 然而,我写的东西不起作用Linux expect-telnet连接,linux,tcl,expect,telnet,Linux,Tcl,Expect,Telnet,我正在尝试创建一个简单的telnet连接脚本。 我生成telnet进程。根据版本的不同,它可能要求输入密码,也可能不要求输入密码 之后,它要求用户名和密码以及规则接受。成功登录后,它会提示输入命令 然而,我写的东西不起作用 #/usr/bin/expect -f set IP [lindex $argv 0] set timeout 10 set send_slow {10 .5} log_user 1 spawn telnet -l cli $IP expect { timeout
#/usr/bin/expect -f
set IP [lindex $argv 0]
set timeout 10
set send_slow {10 .5}
log_user 1
spawn telnet -l cli $IP
expect {
timeout {
puts "Network Connection Problem"
close
}
"Password:" {
send -s -- "cli\r"
exp_continue
}
"Username:" {
send -s -- "admin\r"
expect "Password:"
send -s -- "admin\r"
exp_continue
}
"(Y/N)?" {
send -s -- "Y\r"
exp_continue
}
}
expect "# "
send -s -- "show version\r"
运行脚本后,我进行登录和协议。显示提示后,脚本不会执行show version命令。光标在几秒钟后闪烁我看到信息:
预期:生成id exp6未打开
执行“expect”时
有人能纠正我的错误吗?我阅读了expect手册,浏览了示例脚本,但找不到任何解决方案。我相信这很简单,但我在这里挣扎
帮帮我,船长 这里有一个声明
spawn telnet -l cli $IP
将telnet会话的用户名指定为cli
。因此,将永远无法访问登录为admin
的代码
admin的默认shell提示符是
'# '
cli的默认shell提示符为
'$ '
更改代码以处理查找任一shell提示符的操作。这里有一条语句
spawn telnet -l cli $IP
将telnet会话的用户名指定为cli
。因此,将永远无法访问登录为admin
的代码
admin的默认shell提示符是
'# '
cli的默认shell提示符为
'$ '
更改代码以处理查找任意一个shell提示符的操作。在expect命令中至少需要一个不执行exp\u continue的分支:“exp\u continue”:将提示符的模式作为expect命令中的最后一个模式,而不执行任何操作:当expect看到提示符时,expect命令将结束,脚本可以继续执行
expect {
timeout {
puts "Network Connection Problem"
close
exit ;# if you don't exit, your next command is "send" which will fail
}
"Password:" {
send -s -- "cli\r"
exp_continue
}
"Username:" {
send -s -- "admin\r"
expect "Password:"
send -s -- "admin\r"
exp_continue
}
"(Y/N)?" {
send -s -- "Y\r"
exp_continue
}
"# "
}
send -s -- "show version\r"
expect命令中至少需要一个不执行exp_continue的分支:将提示符的模式作为expect命令中的最后一个模式,而不执行任何操作:当expect看到提示符时,expect命令将结束,脚本可以继续执行
expect {
timeout {
puts "Network Connection Problem"
close
exit ;# if you don't exit, your next command is "send" which will fail
}
"Password:" {
send -s -- "cli\r"
exp_continue
}
"Username:" {
send -s -- "admin\r"
expect "Password:"
send -s -- "admin\r"
exp_continue
}
"(Y/N)?" {
send -s -- "Y\r"
exp_continue
}
"# "
}
send -s -- "show version\r"