Per automatizzare l'aggiornamento dello stato dei nodi, potremmo far girare sul mapserver uno script tipo questo che ho fatto al volo. In maniera molto rozza, questo script periodicamente si scarica tutto il database, dove al posto dei nomi delle vie ci trova l'IP del nodo, prova a pingarlo e se necessario aggiorna lo stato del nodo.

Lorenzo



ZioPRoTo (Saverio Proto) ha scritto:
per tutti:

map.ninux.org

potete inziare a mettere i nodi! :)
siamo in contatto diretto con quelli di Seattle!

Saverio


#! /usr/bin/python
import os
import time
import MySQLdb

# Ninux.org 

pingcmd = "ping -c 1 " 
host = "127.0.0.1"
user="root"
passwd="ciao"
db="wnmap"
table="nodes"
ip_fieldn="6" #il sesto (si parte da 0) campo della tabella contiene l'IP
status_fieldn="2" # il secondo è il campo dello status
status_active="active" #cosa scrivere per un nodo attivo?
status_nonactive="potential" #e per un nodo non attivo?
polling_time="3600" # ogni quanto ripete il test del ping (in sec)

while 1:
   try:
      conn = MySQLdb.connect(host,user,passwd,db)
   except MySQLdb.Error, e:
      print "Error %d: %s" % (e.args[0], e.args[1]) 
   cursore = conn.cursor()
   cursore.execute('SELECT * FROM nodes')
   for record in cursore.fetchall():
      if os.system(pingcmd + record[ip_fieldn]) != 0: # nodo non attivo
         if record[status_fieldn] == status_active: #aggiorna
           cursore.execute('UPDATE nodes SET status=%s WHERE id=%s', 
status_nonactive, record[0])
      else: # se lo troviamo attivo invece ...
        if record[status_fieldn] == status_nonactive:
           cursore.execute('UPDATE nodes SET status=%s WHERE id=%s', 
status_active, record[0])
   time.sleep(polling_time)
           
#bye OrazioPirataDelloSpazio :)

Rispondere a