home *** CD-ROM | disk | FTP | other *** search
/ ftp.ac-grenoble.fr / 2015.02.ftp.ac-grenoble.fr.tar / ftp.ac-grenoble.fr / pub / slis / updates_rsync / monitor < prev    next >
Text File  |  2004-02-10  |  6KB  |  193 lines

  1. #!/bin/bash
  2. ###### Variables ###########
  3. LOGTAG="monitor[$$]"
  4. grep HOSTNAME /etc/sysconfig/network > /tmp/hostname
  5. . /tmp/hostname
  6. rm -rf /tmp/hostname
  7. WEBMASTER=`ls -ld /home/httpd/html |awk '{print $3}'` # Webmaster designΘ par l'admin local
  8. VERSION=`cat /etc/version_slis_num`
  9. . /home/hadmin/setup.data 2>/dev/null
  10. . /home/hadmin/slis.conf 2>/dev/null
  11. . /usr/local/lib/slis-sys.inc.bash 2>/dev/null
  12. load_config 2>/dev/null
  13.  
  14. ###########################
  15.  
  16. # Locking
  17. if [ -e /var/lock/monitoring_script ]
  18. then 
  19.   logger -t "$LOGTAG" "Monitoring script already started. Canceling."
  20.   exit
  21. fi
  22. touch /var/lock/monitoring_script
  23. sleep 1
  24.  
  25.  
  26. logger -t "$LOGTAG" "Monitoring starting..."
  27. #############################################
  28.  
  29. # Parametres du user de connexion a la base SQL
  30. export PGUSER=sliss
  31. export PGPASSWORD=demo
  32. SQL_SERVER="sql.ac-grenoble.fr"
  33. PSQL="psql -h $SQL_SERVER sliss -tqc"
  34.  
  35. # Recuperation des params de l'administrateur et autres parametres
  36. PRENOM_ADMIN=`awk '{if (NR==1) print}' $BASE/params_admin.txt`
  37. NOM_ADMIN=`awk '{if (NR==2) print}' $BASE/params_admin.txt`
  38. MAIL_ADMIN=`awk '{if (NR==3) print}' $BASE/params_admin.txt`
  39. TEL_ADMIN=`awk '{if (NR==4) print}' $BASE/params_admin.txt`
  40. VERSION_SLIS=`cat /etc/version_slis`
  41. MEM=`free |awk '{if ($1 == "Mem:") print $2}'`
  42. UPTIME=`cat /proc/uptime |cut -d. -f1`
  43. LOAD=`cat /proc/loadavg |cut -d" " -f3`
  44. KREL=`uname -r |cut -d. -f1,2`
  45. if [ "$KREL" = "2.2" -o "$KREL" = "2.4" ]
  46. then
  47.   CPU_MODEL=`cat /proc/cpuinfo |grep -i "model name"|cut -d: -f2|uniq`
  48.   CPU_SPEED=`cat /proc/cpuinfo |grep -i "cpu MHz"|cut -d: -f2|cut -d. -f1|uniq`
  49.   CPU="$CPU_MODEL $CPU_SPEED MHz"
  50. fi
  51. if [ "$KREL" = "2.0" ]
  52. then
  53.   CPU_MODEL=`cat /proc/cpuinfo |grep -i "model"|cut -d: -f2|uniq`
  54.   CPU_SPEED=`cat /proc/cpuinfo |grep -i "bogomips"|cut -d: -f2|cut -d. -f1|uniq`
  55.   CPU="$CPU_MODEL ($CPU_SPEED bogomips)"
  56. fi
  57. ACCOUNTS=`ldapsearch -LLL -x -h localhost objectclass=posixAccount dn |grep "dn:"|wc -l`
  58. #NBUG=`awk -F: '{if (length($1) > 8 ) print $1}' /etc/passwd|wc -l`
  59. KRELEASE=`/bin/uname -r`
  60.  
  61. # Renseignement de la base centrale (table slis)
  62. HOST=`echo $HOSTNAME|sed "s/\.$DOMAIN//"`
  63. psql -h $SQL_SERVER sliss -tqc "delete from slis where nom='$HOST'"
  64. psql -h $SQL_SERVER sliss -tqc "insert into slis 
  65. (nom,mail_admin,tel_admin,prenom_admin,nom_admin,version,date,mem,uptime,charge,cpu_model,n_accounts,krelease)
  66. values ('$HOST','$MAIL_ADMIN','$TEL_ADMIN','$PRENOM_ADMIN','$NOM_ADMIN','$VERSION_SLIS',now(),'$MEM','$UPTIME','$LOAD','$CPU','$ACCOUNTS','$KRELEASE')"
  67.  
  68. # Recuperation d'un df et envoi <E0> la base centrale (table df)
  69. psql -h $SQL_SERVER sliss -tqc "delete from df where slis='$HOST'"
  70. R=$RANDOM
  71. df -k > /tmp/df.$R
  72. grep -v Filesystem /tmp/df.$R| sed "s/%//g" | \
  73.  awk -v host=$HOST -v psql="$PSQL" \
  74.  '{print psql " \"insert into df (slis,part,size,free,used_percent,mount) values (\x27" host "\x27,\x27" $1 "\x27,\x27" $2 "\x27,\x27" $4 "\x27,\x27" $5 "\x27,\x27" $6 "\x27)\"" }' > /tmp/df.sql.$R
  75. bash /tmp/df.sql.$R
  76. rm -rf /tmp/df.$R
  77.  
  78. # Envoi des adresses ip des interfaces
  79. psql -h $SQL_SERVER sliss -tqc "delete from ip where slis='$HOST'"
  80.  
  81. for if in `/bin/netstat -i|awk '{if (NR>2) print $1}'`
  82. do
  83.   ip=`/sbin/ifconfig $if |grep "inet ad"|awk -F":" '{print $2}'|awk '{print $1}'`
  84.   psql -h $SQL_SERVER sliss -tqc "insert into ip (ip,if,slis) values ('$ip','$if','$HOST')"
  85. done
  86.  
  87. # Etat des services et envoi <E0> la base centrale (table pservices)
  88. SENDMAIL=0;SQUID=0;HTTP=0;HADMIN=0;ADMIND=0;SYSLOG=0;NAMED=0
  89. INETD=0;POSTMASTER=0
  90. if [ "`ps awux |grep sendmail|grep "smmsp"|grep -v grep`" != "" ]
  91. then
  92.   SENDMAIL="1"
  93. else
  94.   /etc/rc.d/init.d/sendmail restart
  95.   sleep 1
  96.   if [ "`/bin/ps awux |grep sendmail|grep "accepting conn"|grep -v grep`" != "" ]
  97.   then
  98.     SENDMAIL="1"
  99.   fi
  100. fi
  101. if [ "`/bin/ps awux |grep squid|grep -v grep`" != "" ]
  102. then
  103.   SQUID="1"
  104. else
  105.   if [ "$PROXYON" != "0" ]
  106.   then
  107.     logger -t "$LOGTAG" "Squid is down, trying to restart"
  108.     killall RunCache
  109.     killall squid
  110.     sleep 2
  111.     /etc/rc.d/init.d/runcache start
  112.     sleep 2
  113.     if [ "`/bin/ps awux |grep squid|grep -v grep`" != "" ]
  114.     then
  115.       SQUID="1"
  116.     fi
  117.   fi
  118. fi
  119. if [ "`/bin/ps awux |grep httpd|grep nobody|grep -v grep`" != "" -o "`/bin/ps awux |grep httpd|grep apache|grep -v grep`" != "" ]
  120. then
  121.   HTTP="1"
  122. else
  123.   if [ "$HTTPDON" != "0" ]
  124.   then
  125.     logger -t "$LOGTAG" "Httpd is down, trying to restart"
  126.     /etc/rc.d/init.d/httpd start
  127.     sleep 2
  128.   fi
  129.   if [ "`/bin/ps awux |grep httpd|grep nobody|grep -v grep`" != "" -o "`/bin/ps awux |grep httpd|grep apache|grep -v grep`" != "" ]
  130.   then
  131.     HTTP="1"
  132.   fi
  133. fi
  134. if [ "`/bin/ps awux |grep httpd|grep hadmin|grep -v clientgw|grep -v grep`" != "" ]
  135. then
  136.   HADMIN="1"
  137. else
  138.   logger -t "$LOGTAG" "Hadmin httpd is down, trying to restart"  
  139.   export PHPRC="/etc/hadmin";/usr/sbin/httpd -f /etc/hadmin/conf/httpd.conf;export -n PHPRC
  140.   if [ "`/bin/ps awux |grep httpd|grep hadmin|grep -v clientgw|grep -v grep`" != "" ]
  141.   then
  142.     HADMIN="1"
  143.   fi
  144. fi
  145. if [ "`/bin/ps awux |grep admind|grep -v grep`" != "" ]
  146. then
  147.   ADMIND="1"
  148. fi
  149. if [ "`/bin/ps awux |grep syslog|grep -v grep`" != "" ]
  150. then
  151.   SYSLOG="1"
  152. fi
  153. if [ "`/bin/ps awux |grep inetd|grep -v grep`" != "" ]
  154. then
  155.   INETD="1"
  156. fi
  157. if [ "`/bin/ps awux |grep named|grep -v grep`" != "" ]
  158. then
  159.   NAMED="1"
  160. else
  161.   /etc/rc.d/init.d/named stop
  162.   /usr/sbin/named
  163.   sleep 1
  164.   if [ "`/bin/ps awux |grep named|grep -v grep`" != "" ]
  165.   then
  166.     NAMED="1"
  167.   fi
  168. fi
  169. if [ "`/bin/ps awux |grep postmaster|grep -v grep`" != "" ]
  170. then
  171.   POSTMASTER="1"
  172. else
  173.   /etc/rc.d/init.d/postgresql stop
  174.   sleep 1
  175.   /etc/rc.d/init.d/postgresql start
  176.   sleep 2
  177.   if [ "`/bin/ps awux |grep postmaster|grep -v grep`" != "" ]
  178.   then
  179.     POSTMASTER="1"
  180.   fi
  181. fi
  182. psql -h $SQL_SERVER sliss -tqc "delete from services where nom='$HOST'"
  183. psql -h $SQL_SERVER sliss -tqc "insert into services 
  184. (nom,sendmail,squid,http,hadmin,admind,syslog,named,inetd,postmaster)
  185. values ('$HOST','$SENDMAIL','$SQUID','$HTTP','$HADMIN','$ADMIND','$SYSLOG','$NAMED','$INETD','$POSTMASTER')"
  186.  
  187.  
  188. ##############################
  189. logger -t "$LOGTAG" "Monitoring ending."
  190.  
  191. /bin/rm -rf /var/lock/monitoring_script
  192.  
  193.