viewgit/index.php:465 Only variables should be passed by reference [2048]
viewgit/index.php:466 Non-static method GeSHi::get_language_name_from_extension() should not be called statically [2048]
#!/usr/bin/python # -*- coding: utf-8 -*- # # Monitora se i computer dell'aula studenti sono accesi # e restituisce delle statistiche a proposito. import subprocess, time # Qualche variabile globale database_directory = '/home/robol/client_stats/' # Il traling slash ci serve max_time = 86400 * 10 # 10 giorni def LoadClients(group = 'all'): """ Ritorna una lista con tutti i client all'interno del gruppo group di dsh. Il default è 'all' """ clients = [] for client in open('/etc/dsh/group/' + group, 'r'): client = client.strip() if client.strip != '' and client[0] != '#': clients.append (client) return clients def IsAlive(client): """ Ritorna True se il client è acceso e risponde ai ping """ alive = subprocess.call(["fping", client]) return (alive == 0) def LoadClientData(client): """ Carica i dati relativi a quel determinato client. Questi sono nella forma di un dizionario con gli oggetti time e Valori True o False """ data = {} try: f = open(database_directory + client, 'r') except IOError: return data for line in f: (time, alive) = line.split(":") data[time] = alive f.close() return data def DumpClientData(client, data): """ Salva i dati relativi ad un client, eliminando quelli troppo vecchi """ data = dict (filter(lambda i: (i[0] > time.time() - max_time), data.items())) f = open(database_directory + client, 'w') for stat in data.items(): f.write (":".join(map(str, stat))) f.close() def UpdateClientsData(client, alive): """ Aggiorna i dati relativi al client inserendo l'informazione che in questo momento è acceso. """ data = LoadClientData(client) data[time.time()] = alive DumpClientData(client, data) if __name__ == "__main__": for client in LoadClients(): UpdateClientsData(client, IsAlive(client))