ping.py....
authorAlexandre Domont <alexandre.domont@auf.org>
Wed, 25 May 2011 11:24:11 +0000 (13:24 +0200)
committerAlexandre Domont <alexandre.domont@auf.org>
Wed, 25 May 2011 11:24:11 +0000 (13:24 +0200)
ping.py [new file with mode: 0644]
pingtosms.py [new file with mode: 0755]

diff --git a/ping.py b/ping.py
new file mode 100644 (file)
index 0000000..03a4209
--- /dev/null
+++ b/ping.py
@@ -0,0 +1,56 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# script de supervision : ping une liste de serveurs est envoie un SMS en cas de probleme 
+# particularite : retention de 240 minutes (4H) entre les envois. Evite le SPAM !
+
+import commands , sys, logging, os, time, datetime
+from conf import *
+from sendsms import *
+
+#Variables
+
+SERVER=['10.72.1.20','10.72.1.14', '10.72.1.16', 'www.refer.org']
+ALERTE=[]
+filename='/var/log/smsalerte.log'
+# temps de retention avant le second SMS, en minutes 
+tempo = 240
+
+
+logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', filename=os.path.expanduser(filename), filemode='a', level=logging.DEBUG)
+
+# Ping les serveurs listes plus haut
+for element in SERVER:
+
+       (exitstatus, outtext) = commands.getstatusoutput('ping -c5 ' + element)
+
+       # si le status est > 0 alors le ping est en erreur      
+       if exitstatus > 0:
+       
+               ALERTE.append(element)
+               
+
+# si au moins une erreur alors action
+# test si ALERTE est vide
+
+if  ALERTE != []:
+
+
+       # Convert la list en chaine lisible
+       ERREUR = '[' + "] - [".join(ALERTE) + ']'
+
+       #Recupere la date de derniere modification du fichier log (date de dernier envoie SMS)
+
+       datefile =  time.localtime(os.path.getmtime(filename))
+       datenow  =  time.localtime()
+
+       #Compare les deux dates (maintenant et date fichier log)
+       iff = time.mktime(datenow) - time.mktime(datefile)
+
+       # si > tempo  = envoie SMS 
+       if iff/60.0 > tempo:
+               logging.info ('Alerte SMS pour les serveurs suivants : ' + ERREUR)
+               msg = 'Alerte SMS pour le(s) serveur(s) suivant(s) : ' + ERREUR
+               #### --> Envoie ici le SMS
+               smsender(msg)
+
diff --git a/pingtosms.py b/pingtosms.py
new file mode 100755 (executable)
index 0000000..b6c371e
--- /dev/null
@@ -0,0 +1,60 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# pingtosms
+# script de supervision : ping une liste de serveur et envoie un sms en cas de probleme 
+
+import commands , sys, logging, os, time, datetime
+
+#Variables
+
+SERVER=['10.72.1.20','10.72.1.14', '10.72.1.165', 'www.refer.org']
+ALERTE=[]
+filename='/var/log/smsalerte.log'
+# temps de retention avant le second SMS, en minutes 
+tempo = 1
+
+
+logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', filename=os.path.expanduser(filename), filemode='a', level=logging.DEBUG)
+
+# Ping les serveurs listes plus haut
+for element in SERVER:
+
+       (exitstatus, outtext) = commands.getstatusoutput('ping -c10 ' + element)
+
+       # si le status est > 0 alors le ping est en erreur      
+       if exitstatus > 0:
+       
+               print "Ping " + element + ": Erreur"    
+               ALERTE.append(element)
+               
+       else:
+
+              print "Ping " + element +": ok"
+
+# si au moins une erreur alors
+# test si ALERTE est vide
+
+if not ALERTE:
+
+       print 'RAS'
+else:
+       print 'Pas de ping pour les serveurs suivants : ', ALERTE
+
+       # Convert la list en chaine lisible
+       ERREUR = '[' + "] - [".join(ALERTE) + ']'
+
+       #Recupere la date de derniere modification du fichier log (date de dernier envoie SMS)
+
+       datefile =  time.localtime(os.path.getmtime(filename))
+       datenow  =  time.localtime()
+
+       #Compare les deux dates (maintenant et date fichier log)
+       iff = time.mktime(datenow) - time.mktime(datefile)
+
+       # si > tempo  = envoie SMS 
+       if iff/60.0 > tempo:
+               print "> tempo' = envoie SMS"
+               logging.info ('Alerte SMS pour les serveurs suivants : ' + ERREUR)
+               #### --> Envoie ici le SMS
+