Forum
Arkadaşlar, bazı çalışan servisler'i redhat ve ya solaris üzerinde kontrol etmek için script'e ihtiyacım var.
Script #service nagios status komutunu çalıştıracak. Eğer output'unda running satırını görürse sorun yok ama running satırı yoksa #service nagios start komutunu çalıştıracak.
# service nagios status
nagios (pid 18525) is running...
#
Birde ntop servisini kontrol etmem gerekiyor. Ntop'ı da #pgrep ntop komutu ile kontrol edebiliyorum. Komut çalıştığında output'unda bir değer varsa sorun yok, eğer değer yoksa /usr/local/bin/ntop -d -i "eth0" -L -P /usr/local/var/ntop -u ntop --skip-version-check --use-syslog=daemon komutu çalıştırıp ntop'ı up yapacak.
# pgrep ntop
17551
#
Eğer bunu C veya başka bir dille ile bir arkadaş yazarsa gcc ile compile edip binary dosyasını oluşturup, sh autostart.sh olarak crontab'a koyabilirim.
Arkadaşlar sizden hayır gelmedi bende kendi işimi kendim gördüm.
Nagios ve ntop için script hazırladım. servisleri stop etsem veya reboot
etsem dahi servisler 10 sn. içinde tekrardan başlıyor. script'in
çalışma mantığı şöyle, #ps -ef ile bütün servislerin background da nasıl
çalıştığını görüyoruz. her 10 sn.de bir servis backgrounda da
çalışıyormu diye kontrol ediliyor , eğer bulamazsa servisi başlatıyor.
crontab, script ve dosyaların konumunu olarak üç'e ayırdım. vatana
millete ve tüm insanlara hayırlı olsun 🙂
FOR NAGIOS
** crontab **
[root@GateWay /]# crontab -l
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
@reboot ./autostart.sh > /tmp/autostart.log 2>&1
[root@GateWay /]#
** autostart.sh root(/)'un altında.
[root@GateWay /]# cat autostart.sh
#!/usr/bin/env bash
#export ARGELA_RUN_HOME=/
nagios_kontrol()
{
# hOldPID=0
while :; do
hPID=0
hPID=`pgrep -f '/usr/bin/nagios -d /etc/nagios/nagios.cf'`
if [ -z "$hPID" ] ; then
if [ -f $ARGELA_RUN_HOME/sbin/service ]; then
$ARGELA_RUN_HOME/sbin/service nagios start
else
echo "############################################"
echo "### Can not find nagios service ###"
echo "### Check ARGELA_RUN_HOME setting ###"
echo "### Execution failed... ###"
echo "############################################"
break
fi
else
sleep 10
fi
done
}
nagios_kontrol &
[root@GateWay /]#
***root*********
root'da autostart.sh var.
/tmp/autostart.log //dosyayı oluştur.
FOR NTOP
** crontab **
[root@argela /]# crontab -l
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
@reboot ./autostart.sh > /tmp/autostart.log 2>&1
[root@argela /]#
** autostart.sh *** root(/)'un altında.
[root@argela /]# cat autostart.sh
#!/usr/bin/env bash
#export ARGELA_RUN_HOME=/
ntop_kontrol()
{
# hOldPID=0
while :; do
hPID=0
hPID=`pgrep -f 'ntop'`
if [ -z "$hPID" ] ; then
if [ -f $ARGELA_RUN_HOME/./autostart_ntop.sh ]; then
$ARGELA_RUN_HOME/./autostart_ntop.sh
else
echo "############################################"
echo "### Can not find ntop for executable ###"
echo "### Check NTOP please ###"
echo "### Execution failed... ###"
echo "############################################"
break
fi
else
sleep 10
fi
done
}
ntop_kontrol &
[root@argela /]#
** autostart_ntop.sh *** root(/)'un altında.
[root@argela /]# cat autostart_ntop.sh
/usr/local/bin/ntop -d -i "eth0" -L -P /usr/local/var/ntop -u ntop
--skip-version-check --use-syslog=daemon > /tmp/autostart_ntop.log
2>&1
[root@argela /]#
***root************
root'da autostart.sh ve autostart_ntop.sh var.
/tmp/autostart_ntop.log // dosyası oluşturulur.
##############
script'in çalışma mantığı şöyle;
#ps -ef ile servisi kontrol et.
#pgrep ntop // ile pid'si gör.
#pgrep -f 'ntop' // script'in çalışma komutunu yaz. bu ntop için pgrep
-f 'ntop' nagios için pgrep -f '/usr/bin/nagios -d
/etc/nagios/nagios.cf' // çalıştırdığında daima pid çıkmalı ,
çıkmıyorsa sorun var demek, her zaman pid çıkmalı.
hPID=`pgrep -f 'ntop'` // buraya pid aldığın yeri yaz.
if [ -z "$hPID" ] ; then
if [ -f $ARGELA_RUN_HOME/./autostart_ntop.sh ]; then
$ARGELA_RUN_HOME/./autostart_ntop.sh // buraya servisi çalıştıracağın path ya da komutu yaz.