-1

ルーターに問題なく接続する次のコードがあります。問題は、一度接続すると、ルーターに渡されない「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')
4

2 に答える 2

1

問題は、'prompt' を Username: に一致する式に設定することです (警告: そこにバックスラッシュがあるため、実際には SERNAME と一致する可能性があります:)

したがって、tn.cmd(pass) を実行すると、パスワードが送信され、Username: (または SERNAME:) を待機します。

「prompt」を、cisco の通常のプロンプト (正常にログインした後に表示されるプロンプト) と一致する正規表現に変更します。

于 2010-08-13T21:51:14.420 に答える
0

これは、あなたの推奨事項に基づいて使用したコードです。ありがとう

「net/telnet」が必要

tn = Net::Telnet::new("ホスト" => "1.1.1.1", "タイムアウト" => 10000, "プロンプト" => /[$%#>] \z/n)

tn.cmd('String' =>'admin' , 'Match'=>/Password:/) { |c| puts c } tn.cmd('String' =>'pass', 'Match'=>/#/) { |c| puts c } tn.cmd('String' =>'term length 0', 'Match'=>/#/) { |c| puts c } tn.cmd('String'=>'sh run', 'Match'=>/#/) { |c| puts c } tn.close

于 2010-08-13T22:55:10.940 に答える