我有以下代码连接到我的路由器就好了。问题是,一旦连接,我尝试传递永远不会传递给路由器的“sh ver”命令。谢谢你的帮助!
要求'net / telnet'
cisco = '1.1.1.1' #Enter the IP address here
user = 'admin' #Enter username here
pass = 'mypass' #Enter password here
tn = Net::Telnet::new('Host' => cisco, 'prompt' => /^\Username:/ )
tn.cmd('String'=>'admin', 'Match'=>/Password:/) { |c| puts c }
tn.cmd(pass) { |c| puts c }
------------------Does not work below this line---------------------
tn.cmd('String'=>'sh ver')
答案 0 :(得分:1)
问题是你将'prompt'设置为一个与Username匹配的表达式:(警告:你有一个反斜杠,所以它实际上可能匹配SERNAME :)。
所以,当你执行tn.cmd(pass)时,它会发送密码,然后等待Username :(或SERNAME:)。
将“提示”更改为与您的cisco通常提示符匹配的正则表达式(成功登录后看到的提示)。
答案 1 :(得分:0)
所以这是我根据您的建议使用的代码。感谢
要求'net / telnet'
tn = Net :: Telnet :: new(“Host”=>“1.1.1.1”, “超时”=> 10000, “提示”=> / [$%#>] \ z / n)
tn.cmd('String'=>'admin','匹配'=> /密码:/){| c |把c} tn.cmd('String'=>'pass','Match'=> /#/){| c |把c} tn.cmd('String'=>'终端长度0','匹配'=> /#/){| c |把c} tn.cmd('String'=>'sh run','Match'=> /#/){| c |把c} tn.close