решил изобрести велосипед и наваять скрипт, который собирал бы статистику или другие данные с роутеров cisco.
получилось вот что:
---------------------------------------------
#!/bin/bash
path=`pwd`
spisok=$path/spisok
date=`date +%d.%m.%y`
if [ -d "$path/$date" ] ; then
:
else
mkdir $path/$date
fi
cd ./$datewhile read LINE
do
# if [ -n "$LINE" ] ; then#echo $LINE
rsh -l oper $LINE show ver > $LINE
else :
fi
done < $spisokcd ..
#tar -czPf cisco.$date.tar $path/$date
---------------------------------------------
в файле spisok находяцца айпишники роутеров.прошу не ругать за корявость - он еще не закончен :)
но ! почему-то не работает цикл while read LINE при команде rsh в нем.
если вместо нее поставить эхо или отправку почты - все отрабатывает энное количество раз, согласно количеству строк в файле spisok. ставил задержку после команды - все равно цикл заканчивается. если просто в ком.строке запустить команду - работает. кто что может подсказать ?
Когда говорите, что что-то не работает, всегда описываете какое поведение вы ожидаете и что происходит на самом деле. Если убрать проблемы с наполовину закоментаренным if, то скрипт, как я его понимаю, должен заходить на все машины из spisok, на каждой из них делать show ver и записывать результат в файл с тем же именем. Проблема с подобными конструкциями в неоднозначности интерпретации параметров локальным и удаленным шеллом, лучше всего команду брать в кавычки;
rsh -l oper $LINE 'show ver' > $LINE
>Когда говорите, что что-то не работает, всегда описываете какое поведение вы ожидаете
>и что происходит на самом деле. Если убрать проблемы с наполовину
>закоментаренным if, то скрипт, как я его понимаю, должен заходить на
>все машины из spisok, на каждой из них делать show ver
>и записывать результат в файл с тем же именем. Проблема с
>подобными конструкциями в неоднозначности интерпретации параметров локальным и удаленным шеллом, лучше
>всего команду брать в кавычки;rsh -l oper $LINE 'show ver' > $LINE
да, согласен, if закоментарен, но не в нем дело. кавычки 'show ver' тоже не решают проблему.
дето в том что при запуске один раз команда rsh выполняется, беря из файла список айпи и выдавая инфу. после этого по логике должен браться следующий айпи, но прога просто заканчивает работу, причем с кодом 0. почему - непонятно...
>[оверквотинг удален]
>---------------------------------------------
>в файле spisok находяцца айпишники роутеров.
>
>прошу не ругать за корявость - он еще не закончен :)
>но ! почему-то не работает цикл while read LINE при команде rsh
>в нем.
>если вместо нее поставить эхо или отправку почты - все отрабатывает
>энное количество раз, согласно количеству строк в файле spisok. ставил задержку
>после команды - все равно цикл заканчивается. если просто в ком.строке
>запустить команду - работает. кто что может подсказать ?Странно что это вообще работает.
Закоменчен if, но else и fi нет...
>[оверквотинг удален]
>while read LINE
>do
># if [ -n "$LINE" ] ; then
>
>#echo $LINE
> rsh -l oper $LINE show ver > $LINE
> else :
> fi
>done < $spisok
>есть такая хрень. ssh (и иже с ними) "портит" входной поток.
рекомендую использовать форму:
for LINE in `cat $spisok`; do
....
done
#!/bin/bash
path=`pwd`
spisok=$path/spisok
date=`date +%d.%m.%y`
if [ -d "$path/$date" ] ; then
:
else
mkdir $path/$date
fi
cd ./$date
while read LINE
do
if [ -n "$LINE" ] ; then
# start command
rsh -l oper $LINE show ver > $LINE
# end command
else :
fi
done < $spisok
cd ..
tar -czPf cisco.$date.tar $path/$dateсам виноват - нераскоментил некоторые строки.
вот это скрипт, который должен работать.
работает с разными командами на месте "rsh -l oper $LINE show ver > $LINE", но с ней выполняет только первый проход. и все :(
>[оверквотинг удален]
># end command
> else :
> fi
>done < $spisok
>cd ..
>tar -czPf cisco.$date.tar $path/$date
>
>сам виноват - нераскоментил некоторые строки.
>вот это скрипт, который должен работать.
>работает с разными командами на месте "rsh -l oper $LINE show ver > $LINE", но с ней выполняет только первый проход. и все :(А в фаиле список все в порядке с символами конца строки??Ч
попробуйте вместо "rsh -l oper $LINE show ver > $LINE" "echo $LINE", все ли выводится так как надо???
>[оверквотинг удален]
>---------------------------------------------
>в файле spisok находяцца айпишники роутеров.
>
>прошу не ругать за корявость - он еще не закончен :)
>но ! почему-то не работает цикл while read LINE при команде rsh
>в нем.
>если вместо нее поставить эхо или отправку почты - все отрабатывает
>энное количество раз, согласно количеству строк в файле spisok. ставил задержку
>после команды - все равно цикл заканчивается. если просто в ком.строке
>запустить команду - работает. кто что может подсказать ?Зачем так сложно? Для сбора информации с девайсов давно придуман SNMP.
>Зачем так сложно? Для сбора информации с девайсов давно придуман SNMP.:)
- ребята, помогите, не ездит велосипед.
- зачем он тебе? возьми машину!
спасибо за ответы, вы хотя бы старались :)
вот рабочий скрипт:#!/bin/bash
path=`pwd`
spisok=$path/spisok
date=`date +%d.%m.%y`
if [ -d "$path/$date" ] ; then
:
else
mkdir $path/$date
fi
cd ./$date
vars=`cat $spisok`
for LINE in $vars
do rsh -l oper $LINE sh tech-support > $LINE
done
cd ..
tar -czPf cisco.$date.tar ./$dateс while не работает, почему - так и не понял...