Jump to content
Калькуляторы

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 ?

Share this post


Link to post
Share on other sites

terminal-length <0-512> {}

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

#!/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

Edited by ISQman

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.