1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
#!/usr/bin/python2.7
#-*-coding:Latin-1-*
import random
import sys
from threading import Thread
import time
import datetime
import time
import os
import re
import sqlite3
import signal
import sys
from subprocess import check_output
from servSMS import envSMS
from Cryptage import crypt, decrypt
from SNMP import request
class Interface(Thread):
def __init__(self):
Thread.__init__(self)
def run(self):
conn1 = sqlite3.connect('/mnt/Disk2/mysql/Equipements.db')
c1 = conn1.cursor()
print ('Ouverture de Equipements.db')
conn2 = sqlite3.connect('/mnt/Disk2/mysql/Historique.db', check_same_thread=False)
c2 = conn2.cursor()
print ('Ouverture de Historique.db')
conn3 = sqlite3.connect('/mnt/Disk2/mysql/Oid.db')
c3 = conn3.cursor()
print ('Ouverture de Oid.db')
model = ('SW',)
catRef = ('4',)
if __name__== "__main__":
while (1):
for OidByCat in c3.execute('SELECT * FROM Oid WHERE Cat=?', catRef):
for row in c1.execute('SELECT * FROM Equipements WHERE Type=?', model):
print ('Int|ID: '+ row[0] + " adresse -> " + row[3])
# Requete
reponseglob = str(request(str(row[3]), OidByCat[1]))
print (reponseglob)
print ('Int|fin pour '+ row[3])
# Traitement réponse
tmp = reponseglob.split(')')
i = 0
for reponse in tmp:
# Id interface
i += 1
interface = str(row[0]) + 'i' + str(i)
# Valeur interface
val = reponse[-1:]
# Date
date = datetime.datetime.now()
#Construction ligne
ligne = [row[0], row[1], row[2], row[3], interface, str(val), str(date)]
# Comparaison avec dernière val
lastInterface = (interface,)
c2.execute('SELECT * FROM Historique WHERE Interface = ? ORDER BY IdHist DESC', lastInterface)
lastVal = c2.fetchone()
if str(lastVal[6]) != val:
print ('Attention changement d\'état interface:' + interface + 'du SW' + str(row[0]))
print ('Dernière entrée dans la BDD: ')
print lastVal
print ('Requete actuelle: ')
print ligne
print ('Comparaison entre ' + lastVal[6] + ' et ' + val)
# Construction du message
msg = ('NC1052 NA183 NE' + str(row[0]) + ' ' + str(row[1]) + ' ' + str(row[3]) + ' ' + interface +' -> Perte connexion le ' + date)
# Envoie du SMS
envSMS('+33767301164', msg)
c2.execute("INSERT INTO Historique (IdEq, Nom, Type, Ip, Interface, Val, Dat) VALUES (?, ?, ?, ?, ?, ?, ?);", ligne)
conn2.commit()
time.sleep(3)
class Temp(Thread):
def __init__(self):
Thread.__init__(self)
def run(self):
## Ouverture des BDD
conn1 = sqlite3.connect('/mnt/Disk2/mysql/Equipements.db')
c1 = conn1.cursor()
print ('Ouverture de Equipements.db')
conn2 = sqlite3.connect('/mnt/Disk2/mysql/Historique.db', check_same_thread=False)
c2 = conn2.cursor()
print ('Ouverture de Historique.db')
conn3 = sqlite3.connect('/mnt/Disk2/mysql/Oid.db')
c3 = conn3.cursor()
print ('Ouverture de Oid.db')
# Définition des références
model = ('SW',)
catRef = ('1',)
if __name__== "__main__":
while (1):
for OidByCat in c3.execute('SELECT * FROM Oid WHERE Cat=?', catRef):
for row in c1.execute('SELECT * FROM Equipements WHERE Type=?', model):
# Réponse générée
print ('Temp|ID: '+ row[0] + " adresse -> " + row[3])
reponseglob = str(request(str(row[3]), OidByCat[1]))
print (reponseglob)
print ('Temp|fin pour '+ row[3])
i = 'X'
temp = ''
for lettre in reponseglob[60:62]:
temp = temp + lettre
# Date
date = datetime.datetime.now()
#Construction ligne
ligne = [row[0], row[1], row[2], row[3], i, temp, str(date)]
c2.execute("INSERT INTO Historique (IdEq, Nom, Type, Ip, Interface, Val, Dat) VALUES (?, ?, ?, ?, ?, ?, ?);", ligne)
conn2.commit()
time.sleep(5)
# Création des threads
thread_1 = Interface()
thread_2 = Temp()
# Lancement des threads
thread_1.start()
thread_2.start()
# Attend que les threads se terminent
thread_1.join()
thread_2.join() |
Partager