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]

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Monitora se i computer dell'aula studenti sono accesi
  5. # e restituisce delle statistiche a proposito.
  6.  
  7. import subprocess, time
  8.  
  9. # Qualche variabile globale
  10. database_directory = '/home/robol/client_stats/' # Il traling slash ci serve
  11. max_time = 86400 * 10 # 10 giorni
  12.  
  13. def LoadClients(group = 'all'):
  14. """
  15. Ritorna una lista con tutti i client all'interno del
  16. gruppo group di dsh. Il default è 'all'
  17. """
  18. clients = []
  19. for client in open('/etc/dsh/group/' + group, 'r'):
  20. if client.strip() != '' and client.strip()[0] != '#':
  21. clients.append (client)
  22. return clients
  23.  
  24. def IsAlive(client):
  25. """
  26. Ritorna True se il client è acceso e risponde ai ping
  27. """
  28. alive = subprocess.call(["fping", client])
  29. return (alive == 0)
  30.  
  31. def LoadClientData(client):
  32. """
  33. Carica i dati relativi a quel determinato client. Questi
  34. sono nella forma di un dizionario con gli oggetti time e
  35. Valori True o False
  36. """
  37. data = {}
  38. try:
  39. f = open(database_directory + client, 'r')
  40. except IOError:
  41. return data
  42. for line in f:
  43. (time, alive) = line.split(":")
  44. data[time] = alive
  45. f.close()
  46. return data
  47.  
  48. def DumpClientData(client, data):
  49. """
  50. Salva i dati relativi ad un client, eliminando quelli troppo
  51. vecchi
  52. """
  53. data = dict (filter(lambda i: (i[0] > time.time() - max_time),
  54. data.items()))
  55. f = open(database_directory + client, 'w')
  56. for stat in data.items():
  57. f.write (":".join(map(str, stat))
  58. f.close()
  59.  
  60. def UpdateClientsData(client, alive):
  61. """
  62. Aggiorna i dati relativi al client inserendo l'informazione
  63. che in questo momento è acceso.
  64. """
  65. data = LoadClientData(client)
  66. data[time.time()] = alive
  67. DumpClientData(client, data)
  68.  
  69.  
  70.  
  71. if __name__ == "__main__":
  72. for client in LoadClients():
  73. UpdateClientsData(client, IsAlive(client))