Форум на Kuban.ru (http://forums.kuban.ru/)
-   Сети и их администрирование (http://forums.kuban.ru/f1029/)
-   -   скрипт expect для сбора логов (http://forums.kuban.ru/f1029/skript_expect_dlya_sbora_logov-7141890.html)

анонимус1 03.09.2015 10:18

скрипт expect для сбора логов
 
Всем привет. Пишу скрипт, котоырй заходит по ssh на удаленный хост, получает его имя, возвращается с хост-инициатор, создает директорию по имени хоста и с помощью scp копирует в эту директорию логи.
Мой скрипт выглядит вот так:

#!/usr/bin/expect -f
#set timeout 100
set PASS "123"
set USER "root"
set HOST "192.168.0.222"
spawn ssh $USER@$HOST;
expect "password:"
send "$PASS\r"
expect "#"
set DIR [exec hostname]
send "exit\r"
expect "#"
send "mkdir /root/$DIR\r"
expect "#"
spawn scp -r $USER@$HOST:/var/log/* /root/$DIR;
expect "password:"
send "$PASS\r"
expect eof

В итоге получаю ошибку

send: spawn id exp6 not open
while executing
"send "mkdir /root/$DIR\r""
(file "./getlog.sh" line 13)

ЧЯДНТ? В конечно итоге я хочу сделать while цикл и добавить туда n хостов

PS
Не рассказывайте мне про аутентификацию по ключам, это не мой вариант, конечное устройство не поддерживает рса-ключи. Нужно получать эти данные именно экспектом.

анонимус1 03.09.2015 10:48

решил проблему, мой затуп. Надо было отправлять команду mkdir не send'ом, а spawn'ом.
Вот рабочий вариант, вдруг кому пригодится
#!/usr/bin/expect -f
#set timeout 100
set PASS "1qazxdr5"
set USER "root"
set HOST "192.168.0.222"
spawn ssh $USER@$HOST;
expect "password:"
send "$PASS\r"
expect "#"
set DIR [exec hostname]
send "exit\r"
expect "#"
spawn mkdir /root/$DIR \r;
expect "#"
spawn scp -r $USER@$HOST:/var/log/* /root/$DIR;
expect "password:"
send "$PASS\r"
expect eof

70l054 03.09.2015 11:08

ключами удобнее , где надо scp , где нет scp просто в стандартный вывод , дальше в архив и пройтись diff-м , изменения выслать на почту, переделывал когда-то толи перловый толи пхпшный скрипт изначально под snmp+tftp оно было, но забросил (

70l054 03.09.2015 11:11

+2 то для конфигов, для логов есть syslogd по 514 порту loganalyzer, graylog2 , kiwi и ещё гора всяких

70l054 03.09.2015 11:23

А че за железка такая что ничего не поддерживает ?

анонимус1 03.09.2015 17:45

4-70l054 >Я согласен, что с ключами удобнее, сам хотел затулить туда ключи сначала, но оказалось что железка затирает все файлы, которые к ней не относятся после перезагрузки. Если бы она так не делала - я бы заббиксом агент поставил и мониторил вообще все что нужно.

70l054 03.09.2015 21:07

дык это ж никсы по-ходу , врядли она прям затирает, скорее каждый раз разворачивает memory disk с образа, хотя конечно от железяки зависит. Ну да расковыривать дольше выйдет наверно.

Pass 03.09.2015 21:39

5-анонимус1 >
SNMP?

анонимус1 04.09.2015 14:47

7-Pass > а как логи по SNMP получать?

Pass 04.09.2015 14:53

8-анонимус1 >
логи - никак, но другие параметры может и возможно.


Текущее время: 01:21. Часовой пояс GMT +3.