2012-05-08 40 views
1

我有问题。我有一个简单的期望脚本,我打电话到一个php脚本来登录到cisco终端服务器,在实验时间结束后清除vty行。逻辑很简单,如果用户存在,那么它只占用线路vty 0.如何在执行其他命令时发现错误?

如果用户不存在,则会出现问题......思科路由器只显示错误,指出%连接以清除某些内容并期望运行脚本的其余部分,这是不必要的,因为我正在管理10台路由器的实验室并加载需要大量时间的配置文件。

请告诉我如何从日志和结束脚本中读取错误,如果我得到该消息。


#! /usr/bin/expect -f 

spawn telnet 192.168.2.1 
set user [lindex $argv 0] 
set pass [lindex $argv 1] 
expect "Username:" 
send "$user\r" 
expect "Password:" 
send "$pass\r" 
expect "*>" 
send "enable\r" 
expect "*#" 
send "clear line vty 0\r" 
send "\r" 
expect "*#" 
send "copy tftp://192.168.2.3 running-config\r" 
send "config\r" 
send "\r" 
expect "*#\r\n" 
+0

请发表您的脚本 –

+0

%不能清除当前行 这是输出我得到一次它看到该行0是由他本人占用。我可以拒绝访问这一行,但我仍然不希望这个脚本在知道没有用户的情况下重新加载配置。再加上另外一件事情,那就是如何确定它期望的动态字符串,并根据该字符串发送一个命令...就像某个时候它将telnet到路由器时,它会得到“>”,而另外一些时候则会得到“#”,这会让一团糟。所以我想检查一下哪个字符串,然后发出相应的命令。 – RAY

回答

3

则是问有关错误处理代码是在这里...

send "clear line vty 0\r" 
expect { 
    "confirm]" { send "\r" } 
    "% Not allowed" { send "quit\r"; exit } 
} 
expect "#" 

这看起来对于任何[confirm]% Not allowed to clear current line,使适当的走/不走的决定。

我对脚本做了一些修改,所以我可以在我的实验室中对机器运行它。我不知道你是如何禁用路由器来请求启用密码的,但是这可能会添加到脚本中。

如果您希望使脚本更加健壮,则可以在清除行之前发出show user,并且只清除脚本不在的行。我会把它作为一个练习让你去尝试。


#!/usr/bin/expect -f 

spawn telnet 172.16.1.5 
set user [lindex $argv 0] 
set pass [lindex $argv 1] 

expect "Username: " 
send "$user\r" 
expect "assword: " 
send "$pass\r" 
expect ">" 
send "enable\r" 
expect "assword: " 
send "$pass\r" 
expect "#" 
send "clear line vty 0\r" 
expect { 
    "confirm]" { send "\r" } 
    "% Not allowed" { send "quit\r"; exit } 
} 
expect "#" 
send "copy tftp://192.168.2.3 running-config\r" 
expect "Source filename *]? " 
send "config\r" 
expect "Destination filename *]? " 
send "running\r" 
expect "#" 
exit 
+0

真棒:)和一个更多的问题......我正在尝试,并在早上3:36但无法找到答案:(复制tftp命令在我的终端服务器上正常工作,并加载配置文件。有另一个名为** r1 **的配置文件,但我无法在连接到终端服务器的路由器上工作。我不是什么可能的原因,因为一个文件在终端服务器上工作似乎很奇怪,但不是一个路由器!! – RAY

+0

很难说出什么问题了......当你将路由器粘贴到你的路由器时,它是否工作?如果不是,它就在配置文件本身的内容中 –

+0

这是一个文件我从路由器本身复制,所以我不认为这个文件有问题,我只是测试,所以我配置了路由器,并复制它的配置文件,以便当我在实验室时间后在实验室中搅乱时它可以只是重新加载旧的配置,我不知道是什么问题 – RAY

相关问题