【问题标题】:Expect Script continues execute after ping responseping 响应后,Expect 脚本继续执行
【发布时间】:2020-07-24 19:23:12
【问题描述】:

您好,我想制作一个脚本来测试 ping 成功后将继续执行命令。感谢您的所有帮助

在我的代码下面

set ip [10.10.10.1,10.10.10.2]
foreach hostname $ip {
    spawn ping -c 2 -i 3 -W 1 $hostname
    expect { "0%" {
            spawn telnet $hostname
            expect "*sername:"
            send "$userper\n"
            expect "*assword:"
            send "$passper\n"
            expect "#"
            send "exit\n"
            expect eof
        }
    }

}    

【问题讨论】:

  • 你能澄清一下平台和脚本语言吗? telnet 信息不足,您需要说出您要连接的什么程序。
  • 这是预期脚本,在这种情况下,我将验证成功 ling amd 继续执行我的命令行。

标签: expect telnet


【解决方案1】:

首先,这个set ip [10.10.10.1,10.10.10.2] 很可能会给你invalid command name "10.10.10.1,10.10.10.2"

要列出一个列表,请使用set ip {10.10.10.1 10.10.10.2} -- 大括号和空格。

接下来,该 ping 命令不需要任何交互性,所以不要生成它,只需 exec 它即可:

set ping_output [exec ping -c 2 -i 3 -W 1 $hostname]

然后检查0% 的输出——注意,您不想匹配100%,所以在模式中添加一个前导空格:

if {[regexp { 0%} $ping_output]} {
    spawn telnet $hostname
    ...
}

的扩展,所以all the Tcl commands 随时为您服务

【讨论】:

  • 嗨,格伦,感谢您的回答。我会尝试作为你的mantion。并且将是更新的儿子。
  • 嗨,格伦,您的代码已用完,现在我的代码正在运行。但下一个问题导致我使用 foreach,如果 ip int ip list 超时,代码将交互并自动关闭会话。
猜你喜欢
  • 2011-11-25
  • 2021-02-20
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
相关资源
最近更新 更多