Forum

gcc ile compile ede...
 
Bildirimler
Hepsini Temizle

gcc ile compile edebileceğim script lazım 🙂

2 Yazılar
1 Üyeler
0 Reactions
475 Görüntüleme
(@mustafagokhankurt)
Gönderiler: 294
Reputable Member
Konu başlatıcı
 

 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.

 
Gönderildi : 14/09/2011 14:51

(@mustafagokhankurt)
Gönderiler: 294
Reputable Member
Konu başlatıcı
 

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.
 

 
Gönderildi : 22/09/2011 17:36

Paylaş: