Tag: telnet

ruby telnet到windows 2008,执行命令错误

我尝试使用ruby Net :: Telnet连接Windows 2008并执行一些命令。 但它失败了。 如果执行 tn = Net::Telnet::new(“Host”=>”walnutserver”,”Port”=>2300,”Prompt”=> /C:.*>/) tn.login(“user”,”pass”) tn.cmd(“dir”) tn.cmd(“dir”) 第一个tn.cmd(“dir”)成功但第二个抛出exception。然后后续命令全部失败。 经过实验,我发现任何Windows命令都会导致这种情况。 例外: Timeout::Error: timed out while waiting for more data from c:/troy/data/chef/chef-client11/chef/embedded/lib/ruby/1.9.1/net/telnet.rb:558:in `waitfor’ from c:/troy/data/chef/chef-client11/chef/embedded/lib/ruby/1.9.1/net/telnet.rb:697:in `cmd’ from (irb):20 from c:/troy/data/chef/chef-client11/chef/embedded/bin/irb:12:in `’ 使用sock.sysread()方法来读取响应,我发现终端被阻塞并显示dir\r\n0x00More? 如果执行则为Buf tn = Net::Telnet::new(“Host”=>”walnutserver”,”Port”=>2300,”Prompt”=> /C:.*>/) tn.login(“user”,”pass”) tn.cmd(“ls”) tn.cmd(“uname”) 它没有正常运行。 ls , uname是安装在目标机器上的厨师带来的一些linux命令。 ruby版本:ruby 1.9.3p286(2012-10-12)[i386-mingw32] 我发现其他人在Stackoverflow上问了同样的问题,但他没有得到解决方案。 http://www.ruby-forum.com/topic/1516840 需要你的帮助。

如何使用telnet从远程嵌入式系统中获取二进制文件?

我有一个远程嵌入式系统,它是telnet-able。 如何使用ruby从中获取二进制文件? 如果是文本文件,我本可以使用: con = Net::Telnet::new(“Host”=>ip,”Timeout”=>200) #Host not host File.open(“fetched_file”,”w+”) do |f| con.cmd(“cat /ect/file”) {|data| f.write(data)} end 但这对二进制文件不起作用,你不会通过它来获得理想的数据。

如何使用ruby的net / telnet读取整行?

我正在使用ruby中的net / telnet库来从服务器读取数据。 它在最后用换行符发送整行命令,所以我想我会这样做: connection = Net::Telnet.new(options) connection.waitfor(/\n/) do |txt| process txt end 这不起作用,因为它一次性向我发送了一大堆行。 我可以通过以下方式轻松解决这个问题: connection.waitfor(/\n/) do |txt| txt.split(“\n”).each do |line| process line end end 除了这个问题之外:我发送的字符串几乎总是包含半个命令。 即:如果服务器发送此: COMMAND1 option1 option2 option3 COMMAND2 option1 option2 option3 COMMAND3 option1 option2 option3 我经常会这样: COMMAND1 option1 option2 option3 COMMAND2 option1 option2 option3 COMMAND3 opt 然后我将在下一次阅读中获得COMMAND3的其余选项以及COMMAND4。 有什么方法可以让net / telnet发送给我的换行符分隔的文本? 还是另一种解决方法? […]

用于telnet切换的Ruby脚本

我创建了以下ruby脚本telnet到Cisco设备,telnet到Cisco设备并运行命令’show int status err’。 require ‘net/telnet’ C3550_20_PterraEst = “192.168.244.20” #Enter the IP address here USER = “user” #Enter username here PASS = “password” #Enter password here ENABLE = “password” #Enter enable password here print “Selezionare il piano [0-1-2-All]: “; # get the input from the console, val1 = gets; tn = Net::Telnet::new(“Host” => C3550_20_PterraEst, “Timeout” […]