【发布时间】:2013-06-07 11:14:34
【问题描述】:
我需要使用 Ruby 和 Telnet 登录服务器并执行一些命令。我的实际脚本是:
tn = Net::Telnet::new("Host" => "#{ip}", "Port" => 23, "Timeout" => 60,
"Output_log"=>"output_log.log",
"Dump_log"=> "dump_log.log",
"Prompt" => /[#]/ )
tn.cmd("#{USER}\n#{PASS}") { |c| print c }
puts tn.cmd("Conf")
tn.waitfor(/config/) { |str| puts str }
puts tn.cmd("Int fa23")
puts tn.cmd("Shut")
puts tn.cmd("No shut")
puts tn.cmd("Exit")
tn.close
在输出中找到字符串“config”后,我必须只执行第二个命令 (Int fa23)。问题是 waitfor 不起作用。这是输出日志:
Trying XX.XX.XX.XX...
Connected to XX.XX.XX.XX.
User Name:username
Password:*************
BOT-SWT-VSAT-AL-...#Conf
BOT-SWT-VSAT-AL-...(config)#
脚本因等待超时错误而停止。我做错了什么?
【问题讨论】:
-
这是一个非常有趣的脚本。我的问题是,我想,你的问题:你如何捕获输出?或者,也许您只需要处理日志...