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
| isDown = False
isOpen = False
def MyTimer(isOpen,tempo = float(time)):
#si linux
if sys.platform == "linux2":
lPing = subprocess.Popen(["ping","-c", "1 ", ip ],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
elif sys.platform == "win32":
lPing = subprocess.Popen(["ping","-n", "1 ", ip ],
stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
sLigne, erreur = lPing.communicate()
print sLigne
transmis = 0
received = 0
loss = 100
time = 0
#si linux
if sys.platform == "linux2":
info_reg = info_reg = re.search(r'(\d+) packets transmitted',sLigne,re.M)
if info_reg:
transmis = int(info_reg.group(1))
info_reg = info_reg = re.search(r'(\d+) received',sLigne,re.M)
if info_reg:
received = int(info_reg.group(1))
info_reg = info_reg = re.search(r'(\d+)% packet loss',sLigne,re.M)
if info_reg:
loss = int(info_reg.group(1))
info_reg = info_reg = re.search(r'time (\d+)ms',sLigne,re.M)
if info_reg:
time = int(info_reg.group(1))
#info_reg = info_reg = re.search(r'(\d+) packets transmitted, (\d+) received, (.+)% packet loss, time (\d+)ms',sLigne,re.M)
elif sys.platform == "win32":
info_reg = info_reg = re.search(r'envoyés = (\d+)',sLigne,re.M)
if info_reg:
transmis = int(info_reg.group(1))
info_reg = info_reg = re.search(r'reçus = (\d+)',sLigne,re.M)
if info_reg:
received = int(info_reg.group(1))
info_reg = info_reg = re.search(r'perte (\d+)%',sLigne,re.M)
if info_reg:
loss = int(info_reg.group(1))
info_reg = info_reg = re.search(r'Moyenne = (\d+)ms',sLigne,re.M)
if info_reg:
time = int(info_reg.group(1))
#info_reg = info_reg = re.search(r'Paquets : envoyés = (\d+), reçus = (\d+), perdus = (\d+) perte (.+)%',sLigne,re.M)
now = datetime.datetime.now()
print sys.platform
#si l'expression régulière a donné un résultat
if transmis > 0:
"""transmis = int(info_reg.group(1))
received = int(info_reg.group(2))
loss = int(info_reg.group(3))
time = int(info_reg.group(4))"""
isDown = False
if received == 0:
isDown = True
#si le serveur répond après avoir été down et qu'il y a un fichier à uploader alors upload
#recupere les parametres du fichier
if isDown == 'False':
#Ferme la fenêtre pour encoder les pointages locales
if isOpen == True:
#close window
racine.destroy()
fen_upload(racine)
isOpen = False
if(os.path.exists(pathLoc) and os.path.getsize(pathLoc) > 0):
transport = paramiko.Transport((ip, port))
transport.connect(username = user, password = passwd)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put(pathLoc,pathServ)
sftp.close()
transport.close()
#print 'Upload done.'
os.remove(pathLoc) #supprime fichier
else:
if(received == 0 and isOpen == False):
print now.strftime("%d/%m/%YT%H:%M:%S")
fen_matricule(racine)
isOpen = True
else:
received = 0
if(received == 0 and isOpen == False):
print now.strftime("%d/%m/%YT%H:%M:%S")
#fen_matricule(racine)
isOpen = True
threading.Timer(tempo, MyTimer, [isOpen,tempo]).start()
MyTimer(isOpen,float(time)) |
Partager