2

我制作了一个期望/bash 脚本来检索 cisco 设备配置;这是简单的复制cisco运行配置并使用tftp保存。

#!/bin/bash
while read line;
    do

device=$line;
expect << EOF

spawn telnet $device
expect "Username:"
   send "username\n"
   expect "Password:"
  send "password\n"
send "copy running-config tftp://192.168.244.14\r"
expect "Address or name of remote host"
send "\r"
expect "Destination filename "
send "\r"
expect "secs"
send "exit\r"
close
EOF

done < /home/marco/Scrivania/Host.txt

exit 0

我的问题是我有几个设备,一些配置为接受 telnet 连接,另一些只接受 ssh 连接。因此,在我的脚本中,我会添加以下内容:

如果 3 分钟后没有响应,请尝试使用 telnet 连接到设备,取消“spawn telnet...”命令并尝试使用 ssh 连接。

我可以用女巫的方式实现这个吗?

4

1 回答 1

0

这不是解决这个问题的正确方法,真的。最好有两个单独的列表:一个用于 telnet,一个用于 ssh。从长远来看,它只是让事情变得更简单。

但是,如果您真的打算让连接挂起并超时,那么您当然可以这样做。只需以秒为单位设置一个超时值,如果超过了超时时间,则采取的措施。

例如:

spawn telnet $device
expect -timeout 180 {
    "Username:" {send "username\r\n"; sleep 1; send "password\r\n"}
    timeout     { your_ssh_actions_or_proc }
于 2012-06-12T17:39:08.680 回答