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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this