The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Получить данные telnet-ом с удаленного сервера"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Получить данные telnet-ом с удаленного сервера"  
Сообщение от Andrei_V email(ok) on 27-Авг-08, 21:39 
Задача состоит в том, чтобы построить с помощью mrtg графики изменения некоторых величин, которые надо получать с удаленного сервера, не поддерживающего snmp. Эти величины можно получить зайдя на этот сервер telnet-м.

Например, получить с сервера кол-во коннектов через него в данный момент веремени.

Сделал так:

На сервере (Debian), где строится mrtg в mtrg.cfg создал секцию:

## >> Descr: '' | Name: 'elf2-ree_connections' | Ip: '' | Eth: '' ###
Target[elf2-ree_connections]: `/etc/elf2-ree_connections.sh`
YLegend[elf2-ree_connections]: elf2-ree_connections
ShortLegend[elf2-ree_connections]: connections
MaxBytes[elf2-ree_connections]: 63492
Options[elf2-ree_connections]: gauge,  nopercent, growright
Title[elf2-ree_connections]: elf2-ree_connections
PageTop[elf2-ree_connections]: <H1>elf2-ree_connections</H1>

В файле /etc/elf2-ree_connections.sh написан скрипт, который идет на другой сервер-роутер 87.226.ххх.ххх (Linux 2.4.22 ((none)), BusyBox v0.60.5 (2004.03.04-14:03+0000) Built-in shell (ash) ):

#!/usr/bin/expect
spawn telnet 87.226.ххх.ххх
expect {*login:}
send "root\r"
expect {*password:}
send "хххххх\r"
expect {*#}
send "cat /proc/net/ip_conntrack | wc -l\r"
expect {*#}
send "exit\r"

Однако в mrtg возвращается всегда "1" (единица). При этом если ручками зайти телнетом на 87.226.ххх.ххх и выполнить команду
cat /proc/net/ip_conntrack | wc -l
то искомая величина выдается на консоль. Как эту же величину скормить mtrg ?

PS.
Попутно: таким же образом надо забрать последнее значение, выдаваемое командой

# uptime
  9:28am  up 1 day,  7:11, load average: 0.29, 0.62, 0.97

Как скормить mtrg  и именно последнее значение?

Заранее благодарен за подсказки.

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от ANF email on 28-Авг-08, 18:59 
Если спецы молчат, то рискну предположить -
>send "cat /proc/net/ip_conntrack | wc -l\r"

Здесь возникает ошибка и потому -
>Однако в mrtg возвращается всегда "1" (единица).

и потому возвращается её значение - 1
Попробуйте так -
send "a=$(cat /proc/net/ip_conntrack | wc -l)"
send "echo "$a\r"
Не лучше ли заменить перевод каретки на перевод строки? И ещё echo на некоторых OS требуется опция -е.


>таким же образом надо забрать последнее значение, выдаваемое командой
>
># uptime
>  9:28am  up 1 day,  7:11, load average: 0.29, 0.62, 0.97

Если имеется в виду значение 0.97 и там всегда 4 символа то так -
b=$(uptime); echo ${b: -4}
иначе можно так -
uptime | cut -d ',' -f6


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от Andrei_V (ok) on 28-Авг-08, 20:21 
>Попробуйте так -
>send "a=$(cat /proc/net/ip_conntrack | wc -l)"
>send "echo "$a\r"

ругается:

# can't read "(cat /proc/net/ip_conntrack | wc -l)": no such variable
    while executing
"send "a=$(cat /proc/net/ip_conntrack | wc -l)""
    (file "./elf2" line 26)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от ANF email on 28-Авг-08, 22:59 
А если эдак -
echo -e "$(grep -c . /proc/net/ip_conntrack)\r"
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от Andrei_V (ok) on 29-Авг-08, 22:10 
>А если эдак -
>echo -e "$(grep -c . /proc/net/ip_conntrack)\r"

Ругается:

# can't read "(grep -c . /proc/net/ip_conntrack)": no such variable
    while executing
"echo -e "$(grep -c . /proc/net/ip_conntrack)\r""
    (file "./elf2" line 12)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от anf email(ok) on 29-Авг-08, 23:40 

>
>Ругается:
>

Локально то, хоть работает?
Давай вернёмся к первоначальному варианту, но чуть изменим -

send "cat /proc/net/ip_conntrack | wc -l ""\r"

у меня локально с echo это работает, но как будет с send?
И попробуй опцию -s к send подставить.
Что, никакого описания синтаксиса?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от Andrei_V email(ok) on 08-Сен-08, 08:19 
Посоветовали сделать так:

#!/usr/bin/expect
log_user 0
spawn telnet 87.226.ххх.ххх
expect {*login:}
send "root\r"
expect {*password:}
send "хххххх\r"
expect {*#}
send "cat /proc/net/ip_conntrack | wc -l\r"
log_user 1
expect {*#}
send "exit\r"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от Andrei_V email(ok) on 08-Сен-08, 09:45 
>[оверквотинг удален]
>spawn telnet 87.226.ххх.ххх
>expect {*login:}
>send "root\r"
>expect {*password:}
>send "хххххх\r"
>expect {*#}
>send "cat /proc/net/ip_conntrack | wc -l\r"
>log_user 1
>expect {*#}
>send "exit\r"

Этот скрипт поместил в файл /etc/elf2_connections.
Нужное число скрипт в консоль выдает, а в mrtg затолкать его не получается.
В консоли видно вот что:
spawn telnet 87.226.х.х
Trying 87.226.х.х...
Connected to 87.226.х.х.
Escape character is '^]'.

Linux 2.4.22 ((none)) (14:58 on Friday, 24 November 2034)

login: root
Password:


BusyBox v0.60.5 (2004.03.04-14:03+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

# cat /proc/net/ip_conntrack | wc -l
   8412

Вот эти 8412 и надо отобразить в mrtg. А на самом деле туда попадает какое-то совершенно случайное число.
В mrtg пытаюсь отдать это число строкой:
Target[elf2_connections]: `/etc/elf2_connections`

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от anf email(??) on 10-Сен-08, 17:36 
<<"Получить данные telnet-ом с удаленного сервера">>
А вы не боитесь пользоваться телнетом?
Обратите внимание на plink, pscp, psftp из пакета putty.
В этом случае и канал защищенный и нет мучений с expect.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от Andrei_V email(ok) on 11-Сен-08, 06:21 
>А вы не боитесь пользоваться телнетом?

Ну телнет-то все равно нужен - иногда приходится конфигурить. Он прикрыт ACL-ем и длинным цифро-буквенным паролем. К тому же не уверен, что этот роутер, не поддерживающий snmp, поддерживает plink, pscp, psftp.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от anf email(??) on 12-Сен-08, 00:10 
>Ну телнет-то все равно нужен

Дык, а putty 22 порт тот-же телнет, только трафик шифрованный.
Плюс консоль как на ладони.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от sphsop email on 17-Апр-09, 01:58 
Народ, а всё-таки, как отдать mrtg именно заветную циферку? У меня подобная проблема -- скрипт отдаёт две циферки в две строчки, а в mrtg попадает две единицы...
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Получить данные telnet-ом с удаленного сервера"  
Сообщение от Andrei_V email(ok) on 17-Апр-09, 07:18 
>Народ, а всё-таки, как отдать mrtg именно заветную циферку? У меня подобная
>проблема -- скрипт отдаёт две циферки в две строчки, а в
>mrtg попадает две единицы...

С линух-сервера я получаю скриптом (лежит в файлике /etc/ebox_cpu_util):

#!/bin/sh
echo `uptime | sed -e 's/.*, //'` \*100 | bc

Соответственно в mrtg.cfg:

Target[ebox_cpu_util]: `/etc/ebox_cpu_util`
YLegend[ebox_cpu_util]: ebox_cpu_util
ShortLegend[ebox_cpu_util]: %
MaxBytes[ebox_cpu_util]: 100
Options[ebox_cpu_util]: gauge, nopercent, growright
Title[ebox_cpu_util]: ebox_cpu_util
PageTop[ebox_cpu_util]: <H1>ebox_cpu_util</H1>

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру