Tcl 预期脚本问题
我是新来的,我使用一种逻辑来自动连接用户登录的telnet会话,并保持其他线路不变:Tcl 预期脚本问题,tcl,telnet,expect,cisco,Tcl,Telnet,Expect,Cisco,我是新来的,我使用一种逻辑来自动连接用户登录的telnet会话,并保持其他线路不变: for {set i 0} {$i ==4} {incr i} { send "clear line vty $i\r" "confirm]" {send "\r"} "% Not allowed" {send "quit\r"; exit} } 它断开了所有的线路 现在我使用“show user”命令,但是我很难编写一个脚本,输出对我来说不够友好。所以我在这个for循环中编写了IF语句,但它
for {set i 0} {$i ==4} {incr i} {
send "clear line vty $i\r"
"confirm]" {send "\r"}
"% Not allowed" {send "quit\r"; exit}
}
它断开了所有的线路
现在我使用“show user”命令,但是我很难编写一个脚本,输出对我来说不够友好。所以我在这个for循环中编写了IF语句,但它不好,甚至不值得包含在这里。请有人指导我如何匹配输出结果中的字符串,并根据字符串决定是否清除行这是算法中一个有趣的旋转。。。您当前在遍历所有行时遇到的问题是,如果您编写的脚本仅在其中一行上看到自己,它将退出
对于{set i 0}{$i==4}{incr i}{
发送“清除行vty$i\r”
“确认”{发送”\r}
“%Not allowed”{send“quit\r;exit}
}
如果您看到%notallowed
,只需绕过这一行并移动到下一行,而不是退出脚本
对于{set i 0}{$i<4}{incr i}{
发送“清除行vty$i\r”
期待{
“确认”{发送“\r”;预期“*#”}
%不允许“{send”!拒绝清除vty$i\r“expect”*#“}
}
}
Cisco IOS将以开头的行视为注释代码>
以下脚本登录并清除除脚本运行所在行以外的所有行。。。这在我的实验室运行良好
#!/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 "*#"
for {set i 0} {$i < 5} {incr i} {
send "clear line vty $i\r"
expect {
"confirm]" { send "\r"; expect "*#" }
"% Not allowed" { send "! refusing to clear line vty $i\r"; expect "*#" }
}
}
exit
#/usr/bin/expect-f
spawn telnet 172.16.1.5
设置用户[lindex$argv 0]
设置通行证[lindex$argv 1]
应为“用户名:”
发送“$user\r”
预期“assword:”
发送“$pass\r”
期望“>”
发送“启用\r\n”
预期“assword:”
发送“$pass\r”
期望“*#”
对于{set i 0}{$i<5}{incr i}{
发送“清除行vty$i\r”
期待{
“确认”{发送“\r”;预期“*#”}
%不允许“{send”!拒绝清除vty$i\r“expect”*#“}
}
}
出口
我不明白期待{}做什么??它是否带来了大量的expect?这是一种告诉expect查找两个响应中的一个OK great和另一件事…我正在运行一个expect脚本来运行一个命令,以检查实验室启动10分钟后使用“sh line tty 1 sum”占用的tty行然后匹配字符串…是否可能,如果他们没有在线,我可以在我的php脚本中返回一个值,这样我就可以删除用户凭据???我希望你知道我在做什么:)这是一个免费的cisco+基于云的网络监控工具,在实验室:)我会告诉你,一旦它建成。你是个真正的帮手,不客气。如果这解决了你的问题,请不要忘记接受答案。