The OpenNET Project / Index page

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

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

"проблемка со скриптом на shell"  
Сообщение от Валентин email(??) on 16-Июл-08, 09:13 
решил изобрести велосипед и наваять скрипт, который собирал бы статистику или другие данные с роутеров cisco.
получилось вот что:
---------------------------------------------
#!/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

#echo $LINE
       rsh -l oper $LINE show ver > $LINE
    else :
    fi
done < $spisok

cd ..
#tar -czPf cisco.$date.tar $path/$date
---------------------------------------------
в файле spisok находяцца айпишники роутеров.

прошу не ругать за корявость - он еще не закончен :)
но ! почему-то не работает цикл while read LINE при команде rsh в нем.
если вместо нее поставить эхо или отправку почты  - все отрабатывает энное количество раз, согласно количеству строк в файле spisok. ставил задержку после команды - все равно цикл заканчивается. если просто в ком.строке запустить команду - работает. кто что может подсказать ?

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

 Оглавление

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


1. "проблемка со скриптом на shell"  
Сообщение от angra (ok) on 16-Июл-08, 22:05 
Когда говорите, что что-то не работает, всегда описываете какое поведение вы ожидаете и что происходит на самом деле. Если убрать проблемы с наполовину закоментаренным if, то скрипт, как я его понимаю, должен заходить на все машины из spisok, на каждой из них делать show ver и записывать результат в файл с тем же именем. Проблема с подобными конструкциями в неоднозначности интерпретации параметров локальным и удаленным шеллом, лучше всего команду брать в кавычки;
rsh -l oper $LINE 'show ver' > $LINE


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

2. "проблемка со скриптом на shell"  
Сообщение от Валентин email(??) on 17-Июл-08, 14:18 
>Когда говорите, что что-то не работает, всегда описываете какое поведение вы ожидаете
>и что происходит на самом деле. Если убрать проблемы с наполовину
>закоментаренным if, то скрипт, как я его понимаю, должен заходить на
>все машины из spisok, на каждой из них делать show ver
>и записывать результат в файл с тем же именем. Проблема с
>подобными конструкциями в неоднозначности интерпретации параметров локальным и удаленным шеллом, лучше
>всего команду брать в кавычки;

rsh -l oper $LINE 'show ver' > $LINE

да, согласен, if закоментарен, но не в нем дело. кавычки 'show ver' тоже не решают проблему.
дето в том что при запуске один раз команда rsh выполняется, беря из файла список айпи и выдавая инфу. после этого по логике должен браться следующий айпи, но прога просто заканчивает работу, причем с кодом 0. почему - непонятно...

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

3. "проблемка со скриптом на shell"  
Сообщение от Arpo email(ok) on 17-Июл-08, 14:37 
>[оверквотинг удален]
>---------------------------------------------
>в файле spisok находяцца айпишники роутеров.
>
>прошу не ругать за корявость - он еще не закончен :)
>но ! почему-то не работает цикл while read LINE при команде rsh
>в нем.
>если вместо нее поставить эхо или отправку почты  - все отрабатывает
>энное количество раз, согласно количеству строк в файле spisok. ставил задержку
>после команды - все равно цикл заканчивается. если просто в ком.строке
>запустить команду - работает. кто что может подсказать ?

Странно что это вообще работает.
Закоменчен if, но else и fi нет...

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

4. "проблемка со скриптом на shell"  
Сообщение от madskull (??) on 17-Июл-08, 14:41 
>[оверквотинг удален]
>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

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

5. "проблемка со скриптом на shell"  
Сообщение от Валентин email(??) on 17-Июл-08, 15:21 
#!/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", но с ней выполняет только первый проход. и все :(

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

6. "проблемка со скриптом на shell"  
Сообщение от Arpo email(ok) on 17-Июл-08, 15:31 
>[оверквотинг удален]
># 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", все ли выводится так как надо???

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

7. "проблемка со скриптом на shell"  
Сообщение от littlevik on 19-Июл-08, 07:17 
>[оверквотинг удален]
>---------------------------------------------
>в файле spisok находяцца айпишники роутеров.
>
>прошу не ругать за корявость - он еще не закончен :)
>но ! почему-то не работает цикл while read LINE при команде rsh
>в нем.
>если вместо нее поставить эхо или отправку почты  - все отрабатывает
>энное количество раз, согласно количеству строк в файле spisok. ставил задержку
>после команды - все равно цикл заканчивается. если просто в ком.строке
>запустить команду - работает. кто что может подсказать ?

Зачем так сложно? Для сбора информации с девайсов давно придуман SNMP.

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

8. "проблемка со скриптом на shell"  
Сообщение от Валентин email(??) on 21-Июл-08, 09:24 
>Зачем так сложно? Для сбора информации с девайсов давно придуман SNMP.

:)
- ребята, помогите, не ездит велосипед.
- зачем он тебе? возьми машину!

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

9. "проблемка со скриптом на shell"  
Сообщение от Валентин email(??) on 22-Июл-08, 09:32 
спасибо за ответы, вы хотя бы старались :)
вот рабочий скрипт:

#!/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 не работает, почему - так и не понял...

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

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

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




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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