Скрипт резервного копирования роутера - PullRequest
0 голосов
/ 14 августа 2010

У меня есть следующий код, который подключается к моему маршрутизатору просто отлично.Проблема в том, что после подключения я пытаюсь передать команду "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')

Ответы [ 2 ]

1 голос
/ 14 августа 2010

Проблема в том, что вы устанавливаете 'prompt' в выражение, которое соответствует имени пользователя: (caveat: у вас там есть обратная косая черта, поэтому, вероятно, оно действительно соответствует SERNAME:)

Поэтому, когда вы делаете tn.cmd (pass), он отправляет пароль, а затем ожидает Имя пользователя: (или SERNAME:).

Измените 'prompt' на регулярное выражение, соответствующее обычному приглашению cisco (приглашение, которое вы увидите после успешного входа в систему).

0 голосов
/ 14 августа 2010

Так что это код, который я использовал на основе ваших рекомендаций, который работает. Спасибо

требуется 'net / telnet'

tn = Net :: Telnet :: new ("Host" => "1.1.1.1", «Тайм-аут» => 10000, "Подсказка" => / [$% #>] \ z / n)

tn.cmd ('String' => 'admin', 'Match' => / Password: /) {| c | ставит с} tn.cmd ('String' => 'pass', 'Match' => / # /) {| c | ставит с} tn.cmd ('String' => 'длина терминала 0', 'Match' => / # /) {| c | ставит с} tn.cmd ('String' => 'sh run', 'Match' => / # /) {| c | ставит с} tn.close

...