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