【发布时间】:2023-03-05 13:48:01
【问题描述】:
我希望能够设置一个可以远程连接到多个交换机的期望脚本文件。
你知道如何编写 telnet 到 200 个交换机的专家脚本并运行一个命令示例:show ip interface brief 然后列出 Linux 上的所有交换机状态吗??
#!/usr/bin/expect -f
spawn telnet 192.168.0.1
expect "Username:"
send "MyUsername\r"
expect "assword:"
send "MyPassword\r"
send "show ip int br\r"
interact timeout 5
expect {
"MORE --, next page" {send -- " "; exp_continue}
"*?2626#*" {send -- "exit \r"}
}
感谢 Dinesh,在我期望的脚本如下:
!/usr/bin/expect -f
吞下输入文件
设置 fp [打开 "input.txt" r]
设置文件数据 [读取 $fp]
关闭 $fp
设置提示“>”
log_file -noappend switch_port_status.txt
foreach ip [split $file_data "\n"] {
提出“切换 $ip 接口状态”
生成远程登录 $ip
期望“用户名:”
发送“我的用户名\r”
期待“assword:”
发送“我的密码\r”
期待 $prompt
# 避免在大型配置中发送“Enter”键
发送“显示 ip int br\r”
期待 $prompt
期待{
-ex "--More--" { 发送--" "; exp_continue }
"*>" { 发送 "exit\r" }
}
设置超时 1; # 恢复默认超时
# 在全局提示下发送“退出”将关闭连接
期待 eof
}
这是可行的。但以下是我收到的错误消息,我该如何解决?谢谢
switch-hostname>交换机接口状态
生成远程登录
用法:telnet [-l 用户] [-a] 主机名 [端口]
发送:生成 id exp9 未打开
执行时
"发送 "我的用户名\r""
(“foreach”身体线 5)
从内部调用
"foreach ip [拆分 $file_data "\n"] {
提出“切换 $ip 接口状态”
生成远程登录 $ip
期望“用户名:”
发送“我的用户名\r”
期待……”
(文件“./autotelnet.sh”第 8 行)
【问题讨论】:
标签: telnet remote-access expect cisco