Перейти к содержимому
Калькуляторы

telnet to Bgpd Получение вывода команды через телнет.

Натолкнулся на проблему ограничения какого-то буфера у телнета.

Задача : Подсоединиться через telnet к quagga

 

0.99.12 на FreeBSD 7.0 , получить список анонсируемых сетей от одного

 

из нейборов.

 

 

1. При использовании NET::Telnet ограничение буфера в 64К,

 

дальше вылетает ошибка

Connection closed by foreign host.

 

2. При конекте через телнет при помощи команды

( sleep 2; echo "pass"; sleep 2; echo "show ip bgp neighbors x.x.x.x 

received-routes"; sleep 10 ) | telnet 127.0.0.1 2605

Вылетает по ошибке

Connection closed by foreign host

Повисает ровно на той же строчке, т.е ограничение в теже 64К

 

3. При выполнении команд в ручную, телнет отрабатывает, но там

 

идет постраничный вывод (Т.е. вывод такой же, как с использованием "|

 

more").

Опять же вопрос почему отрабатывает по разному команда и когда этоже

 

делаешь руками пошагово ?

 

4. С использованием expect

#!/usr/local/bin/expect -f
set timeout 30
spawn telnet 127.0.0.1 2605
match_max 10485760
expect "Password:"
send "pass"
send "show ip bgp neighbors x.x.x.x received-routes\r"
send "exit\r"
expect eof

Отрабатывает и вывод инфы на 128К

Ошибка вылета та же

Connection closed by foreign host.

 

Подскажите, почему это происходит ?

Есть ли еще какие то клиенты телнет под FreeBSD ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

terminal len

<0-512> Number of lines on screen (0 for no pausing)

не оно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

terminal-length <0-512> {}

Установить длину строки терминала <0-512>. Эта команда конфигурации

применяется ко всем интерфейсам VTY.

 

Я думаю врядли, этот параметр повлияет.

Пробовал, результата не дало :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

именно 0 пробовал ставить в начале сессии? оно должно переставать ждать ввода на многостраничных результатах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4. С использованием expect

#!/usr/local/bin/expect -f

set timeout 30

spawn telnet 127.0.0.1 2605

match_max 10485760

expect "Password:"

send "pass"

send "terminal len 0"

send "show ip bgp neighbors x.x.x.x received-routes\r"

send "exit\r"

expect eof

У меня вылетает с "Connection closed by foreign host" на 268K.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

проблема решена:

#!/usr/local/bin/expect -f                                                      
set timeout 30                                                                  
spawn telnet 127.0.0.1 2605                                                     
match_max 10485760                                                              
expect "Password:"                                                              
send "pass\r"                                           
send "terminal len 0\r"                                                         
send "show ip bgp neighbors ххх.х.хх.х received-routes\r"                     
expect "Total*"                                                                 
send "exit\r"                                                                   
expect eof

Изменено пользователем ISQman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2mikevlz ОГРОМНОЕ СПАСИБО!! Действительно помогло :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.