Bash\Expect - мониторинг и уведомление

И так, в продолжение темы Linux - exim, применим отправку почты через bash скрипт. Задача, мониторинг железки (голосовой шлюз, роутер, коммутатор и т.д.), а в момент падения снимать логи с узла куда данная железка была подключена, для диагностики.


И так вот сам скрипт:
____________________________________________________
#!/bin/bash
#Задаем переменную для создания файла с именем текущей даты
fname=/home/DLINKTEST/$(date +%Y-%d%h-%H:%M:%S).log 
# Применим цикл while для пинга железки
err=0
while [ $err = 0 ];
do
ipcl=$1
# IP адрес необходимого узла
ipcomm=$2 # IP адрес коммутатора
# Проверка узла утилитой fping, -b - размер пакетов 12 bytes, -p - интервал между запросами 2 сек, -с кол-# во запросов за 1 интервал.
fping -b 12 -p 2000 -c 2 $ipcl>& /dev/null
# Проверяем код, который возвращает fping, 0 - пинг есть, 1 - узел не доступен. Цикл будет продолжаться до тех пор пока
err=$?
done

# Отдаем команды Expect, в случае не доступности узла, для telnet к коммутатору
VAR=$(expect -c "spawn telnet $ipcomm
expect \"UserName:\"
send \"login\r\"
expect \"PassWord:\"
send \"password\r\"
expect \"*#\"
send \"show log\r\"
expect \"*\"
send \"a\r\"
expect \"*#\"
send \"logout\"
exit
")

echo "$VAR" >> $fname # записываем вывод команды в файл
# Отправка уведомления, с содержанием логов с коммутатора
cat $fname | mail -s "Связь пропала $(date +%d-%h-%H:%M:%S)"  test@test.ru
____________________________________________________

Для того чтобы повесить наш скрипт в фон, запускаем скрипт таким образом
root@debian:/home/DLINKTEST# ./test.rw 192.168.10.5 10.30.0.98 &
test.rw - имя скрипта;
192.168.10.5 - IP адрес железки;
10.30.0.98 - IP адрес коммутатора.

Комментарии

Популярные сообщения