Вкратце: из командной строки прекрасно мониторю bgp-пиры на циске:/usr/bin/rsh -l www 192.168.100.1 show ip bgp summary
так что на циске явно с настройкой rsh все ок.
Однако, стоит мне тот же запрос отправить из shell-скрипта, запускаемого по cron-у, как на выходе получаю пустую строку, хотя, судя по всему (и по логам циски) циска на запрос успешно отвечает.
Такое впечатление, что, будучи запущенной из shell-скрипта, и не найдя интерактивного терминала, rsh вывод команды на удаленном хосте отправляет в /dev/null. Очень странно!
Пытался по-всякому. Просто в cron писал:
/usr/bin/rsh -l www 192.168.100.1 show ip bgp summary > /tmp/out.txt
- создается пустой файлделал в cron:
cat "/usr/bin/rsh -l www 192.168.100.1 show ip bgp summary" | /usr/local/bin/bash
- пустая строка в ответЗапускал из контекста веб-сервера (из php-скрипта) как внешнюю программу ту же строку - точно так же, пустая строка.
Пишу просто в командной строке - все в полном порядке, вывод есть.
Что делать?
Добавьте -n:/usr/bin/rsh -n -l www 192.168.100.1 show ip bgp summary > /tmp/out.txt
> Добавьте -n:
> /usr/bin/rsh -n -l www 192.168.100.1 show ip bgp summary > /tmp/out.txtПопробовал. Никакого эффекта - все равно создается файл нулевой длины.
кому на циске разрешено выполнение команд rsh?
root-у ?
> кому на циске разрешено выполнение команд rsh?
> root-у ?И руту тоже.
Судя по логам циски, и когда даю команду вручную, и когда она вызывается из скрипта, оба раза циска данные отдает, так что проблема не в правах.
Выглядит все так, будто при запуске из скрипта поток данных (ответ циски) куда-то не туда улетает...
та же самая история у меня произошла при смене софта.
с софтом c2800nm-advipservicesk9-mz.124-16.bin мои скрипты работают
а с c2800nm-advipservicesk9-mz.124-24.T3.bin не работают.Могу еще добавить, что из-под shell-а не отдается stdout при использовании ключа -n
Вот четыре примера:--------------------------
$ /usr/bin/rsh -l loader <cisco со старым софтом> show clock20:13:24.334 MSK Thu Jan 13 2011
--------------------------
$ /usr/bin/rsh -n -l loader <cisco со старым софтом> show clock20:13:34.327 MSK Thu Jan 13 2011
--------------------------
$ /usr/bin/rsh -l loader <cisco с новым софтом> show clock20:13:56.996 MSK Thu Jan 13 2011
--------------------------
$ /usr/bin/rsh -n -l loader <cisco с новым софтом> show clock
--------------------------на скрипты из-под крона роутер с новым софтом реагирует точно так-же как и у вас,
т.е. пустой строкой.ОС FreeBSD 7.0-RELEASE-p1
Шеллы пробовал bash и shПрисоединяюсь к вопросу: что делать? куда смотреть?
> та же самая история у меня произошла при смене софта.У нас-то софт не меняли. На ровном месте грабли.
Но что-то тишина с ответами :(
>> та же самая история у меня произошла при смене софта.
> У нас-то софт не меняли. На ровном месте грабли.
> Но что-то тишина с ответами :(у меня еще более чудесная ситуация.
команда sh vpdn - выполняется, а sh vpdn ses уже нет.
проблему не решил.
мне почему-то кажется что софт тут не причем.
>>> та же самая история у меня произошла при смене софта.
>> У нас-то софт не меняли. На ровном месте грабли.
>> Но что-то тишина с ответами :(Столкнулись с подобной проблемой при создании скрипта для киллинья pppoe юзеров на cisco.
В скрипте для теста просто user=`rsh -l test 192.168.1.1 "sh users "` (юзеры присутствуют) При запуске из командной строки в $user записывается все как надо и cisco тож говорит что ответила ok. Когда скрипт запускате биллинг (utm5_rfw) в $user уже ничего не попадает, а cisco так же говорит что ответила ok. Причем если делать что бы биллинг запускал раз 20 скрипт то раза 2 может и в $user и запишется. Случайно поменяли сетевую карту и все заработало. Но для нас эт не выход .
>[оверквотинг удален]
> Пытался по-всякому. Просто в cron писал:
> /usr/bin/rsh -l www 192.168.100.1 show ip bgp summary > /tmp/out.txt
> - создается пустой файл
> делал в cron:
> cat "/usr/bin/rsh -l www 192.168.100.1 show ip bgp summary" | /usr/local/bin/bash
> - пустая строка в ответ
> Запускал из контекста веб-сервера (из php-скрипта) как внешнюю программу ту же строку
> - точно так же, пустая строка.
> Пишу просто в командной строке - все в полном порядке, вывод есть.
> Что делать?не проще через snmp? 1.3.6.1.2.1.15.3.1.2 http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en... .
прикрутить тот же snmpwalk в скрипт и всего делов...
Спасибо за совет!У меня-то проблема была, мне нужно было в т.ч. мониторить кол-во получаемых маршрутов от каждого пира. Так вот иначе как собрать кол-во строк с указанным next-hop (по 1.3.6.1.2.1.15.6), пока не нашел, как выкрутиться, хотя явно в MIB должно быть.
Не подскажете, как все же узнать кол-во маршрутов с каждого пира?
> не проще через snmp? 1.3.6.1.2.1.15.3.1.2 http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en...
> .
> прикрутить тот же snmpwalk в скрипт и всего делов...
> Спасибо за совет!
> У меня-то проблема была, мне нужно было в т.ч. мониторить кол-во получаемых
> маршрутов от каждого пира. Так вот иначе как собрать кол-во строк
> с указанным next-hop (по 1.3.6.1.2.1.15.6), пока не нашел, как выкрутиться, хотя
> явно в MIB должно быть.
> Не подскажете, как все же узнать кол-во маршрутов с каждого пира?
>> не проще через snmp? 1.3.6.1.2.1.15.3.1.2 http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en...
>> .
>> прикрутить тот же snmpwalk в скрипт и всего делов...1.3.6.1.4.1.9.9.187.1.2.4.1.1
Это не чудеса, это багoфича.. посмотрел через wireshark.А прикол в том, что rsh из cli работает нормально и в момент когда установил соединение, циска говорит ок и шлет 1 пакет данных с 00 и линукс говорит , принял и ждет дальше, до момента пока не будет пакета с 0а. потом они заканчивают обмен.
Если же rsh из cron, то чудо. После пакета 00 линукс говрит принял и тут же закончил обмен. На что циска с новым софтом говорит , принял завершенеи обмена и потом сама закрывает передачу. Cо старым совфтом подтверждает прием FINa, но игнорит и шлет данные дальше.
В этом вся фигня!
Конечно тема стара как овно мамонта, но может кому будет надо.. ибо я убил 2 дня на гимор, пока не добрался до шарка.Скрины делать облом, так что надеюсь поймете из описания :)
Народ тут упоминал, но косяк лечится ключом -n то есть/usr/bin/rsh -l rsh 10.10.10.1 "show users sum" - работал только из cli
/usr/bin/rsh -n -l rsh 10.10.10.1 "show users sum" - работает из cli + cron