Юникс вэй

21 апр 08, 09:50
Zenity, NotifySend и kdialog

Если вы хотите добавить в свои скрипты возможность работы с графическим интерфейсом для вывода вопросов, предупреждений и прочего, то для среды GNOME есть замечательная утилитка Zenity, а вместе с ней и NotifySend. Николай из УЦ "Сетевая академия Ланит" выложил в своем блоге достаточно подробную информацию: http://aonick.livejournal.com/?skip=10
Для среды KDE подобную функциональность придает утилита kdialog. Вот пример скрипта с ее использованием:
#!/bin/bash
#Setting enviroument
#Enabling X display
export DISPLAY=":0"
#Pings
PINGS=1
#routers and servers conf
#format string ---> name-without-space:ip
RS="/home/oem/bin/rs.conf"
#critical services list
#format string ---> name-without-space:ip:port
SL="/home/oem/bin/sl.conf"
#send list (netbios names admins comps)
NM=`cat /home/oem/bin/nm.conf | grep -v '^#.*' `

#read router and servers list
IPS=`cat $RS | grep -v '^#.*'`

for REC in $IPS
do
IP=`echo $REC | /usr/bin/awk -F":" '{print $2}'`
/usr/bin/nmap -sP $IP | /bin/grep down > /dev/null
if [ $? -eq 0 ]; then
/usr/bin/kdialog --error `date '+%H:%M:%S'`' Нет связи с '`echo $REC | /usr/bin/awk -F":" '{print $1}'` --title 'Потеря связи!' --display $DISPLAY &
for ADMIN in $NM
do
echo `date '+%H:%M:%S'`' Link down with '`echo $REC | /usr/bin/awk -F":" '{print $1}'` | smbclient -M `echo $ADMIN | /usr/bin/awk -F':' '{print $1}'` -I `echo $ADMIN | /usr/bin/awk -F':' '{print $2}'` > /dev/null
done
fi
done

#read services list
SERV=`cat $SL | grep -v '^#.*'`

for RECS in $SERV
do
S_IP=`echo $RECS | /usr/bin/awk -F":" '{print $2}'`
S_PORT=`echo $RECS | /usr/bin/awk -F":" '{print $3}'`
/usr/bin/nmap -sT $S_IP -p $S_PORT | /bin/grep closed > /dev/null
if [ $? -eq 0 ]; then
/usr/bin/kdialog --error `date '+%H:%M:%S'`' Недоступна служба '`echo $RECS | /usr/bin/awk -F":" '{print $1}'` --title 'ВНИМАНИЕ!' --display $DISPLAY &
for ADMIN in $NM
do
echo `date '+%H:%M:%S'`' Unaviable service '`echo $RECS | /usr/bin/awk -F":" '{print $1}'` | smbclient -M `echo $ADMIN | /usr/bin/awk -F':' '{print $1}'` -I `echo $ADMIN | /usr/bin/awk -F':' '{print $2}'` > /dev/null
done
fi
done


exit

Комментарии

@ 21.4.08, 10:02, Линуксоид
Сразу добавлю, что для корректной работы скрипта ему необходимы файлы:
nm.conf (список станций админов под windows)
-------
admin1:192.168.1.1
admin2:192.168.1.2
-------

rs.conf (список контролируемых хостов)
-------
router1:192.168.0.1 router2:192.168.0.2
-------

sl.conf (список контролируемых служб)
-------
inetserv-smtp:192.168.0.3:25
inetserv-pop3:192.168.0.3:110
inetserv-squid:192.168.0.3:3128
inetserv-ssh:192.168.0.3:22
inetserv-dns:192.168.0.3:53
-------




Добавить комментарий
  • Об этом дневнике 

  • Мой дневник:
  • Создать/изменить дневник
  • Добавить запись
  • Посмотреть комментарии