Skip to content
Snippets Groups Projects
processusEnvoi4G.py 2.93 KiB
Newer Older
Hicham Brahimi's avatar
Hicham Brahimi committed
# A executer avec SUDO
# Gestion de wvdial deplacee dans rapatriement.py
Hicham Brahimi's avatar
Hicham Brahimi committed
# PYTHON 3.5+

import subprocess
import time
import socket
import sys
Hicham Brahimi's avatar
Hicham Brahimi committed
import os
import os.path
from datetime import datetime
import psutil
import shutil

#def check_pid(pid):
#	# Verifie l'existence d'un pid
#	if psutil.pid_exists(pid):
#		p = psutil.Process(pid)
#		if p.status() != psutil.STATUS_ZOMBIE:
#			return True
#	return False
Hicham Brahimi's avatar
Hicham Brahimi committed


# Verifie qu'il n'y a pas d'autres processus d'envoi en verifiant le fichier lock
if os.path.isfile("./.lockprocess"): print("Locked")
while os.path.isfile("./.lockprocess"): time.sleep(1)
Hicham Brahimi's avatar
Hicham Brahimi committed
# Creer un nouveau fichier lock pour verrouiller les autres processus
if not os.path.isfile("./.lockprocess"):
	open(".lockprocess", "a").close()
	subprocess.Popen(["chmod", "777", ".lockprocess"])
else: # Si un processus s'est activée entre la 1ere boucle et la condition
	while os.path.isfile("./.lockprocess"): time.sleep(1)
	open(".lockprocess", "a").close()
	subprocess.Popen(["chmod", "777", ".lockprocess"])

FOLDER = "data/"
TRAITEES = "traitees/"

Hicham Brahimi's avatar
Hicham Brahimi committed
IP_PC = "91.162.19.165"
PORT = 20000
nomFichier = sys.argv[1]
Hicham Brahimi's avatar
Hicham Brahimi committed
chemin = nomFichier.split("/")

log = open("log/"+chemin[1]+".log", "w")
f = None


try:
	#print("============ WVDIAL LANCE ==============")
	#print("PID = ",pid.pid)
	#print("============ CORRECTION ROUTE ==============")
	#subprocess.Popen(["route", "add", "default", "dev", "ppp0"]) # Corrige la 4G au demarrage du raspberry
Hicham Brahimi's avatar
Hicham Brahimi committed


	print("============ CONNEXION ==============")
	server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	server.connect((IP_PC, PORT))

	f = open(nomFichier, "rb")


	print("======== CALCUL TAILLE ========")
	taille = os.path.getsize(nomFichier)


	print("============ ENVOI FICHIER ==============")
	totalEnvoyee = 0

	with open(nomFichier, "rb") as f:
		totalEnvoyee += server.sendfile(f, 0)
		print("    => chunk %d/%d" % (totalEnvoyee, taille))
		log.write("    => chunk "+str(totalEnvoyee)+"/"+str(taille)+"\n")

	server.close()

	shutil.move(FOLDER+chemin[1], TRAITEES+chemin[1])
Hicham Brahimi's avatar
Hicham Brahimi committed
except KeyboardInterrupt :
	print("============= LIBERATION =============")
	os.remove(".lockprocess")

	#print("============ WVDIAL ARRET ==============")
	#subprocess.Popen(["kill", "-1", str(pid.pid)])
Hicham Brahimi's avatar
Hicham Brahimi committed


except Exception as ex:
	print("Exception, voir log")
	log.write(str(datetime.now())+" => Exception "+str(type(ex))+" ("+str(ex.args)+")\n")
	time.sleep(1)
	print("============= LIBERATION =============")
	os.remove(".lockprocess")

	#print("============ WVDIAL ARRET ==============")
	#subprocess.Popen(["kill", "-1", str(pid.pid)])
Hicham Brahimi's avatar
Hicham Brahimi committed


print("================ FIN =================")
if f is not None:
	f.close()
	server.close()

log.close()

#if check_pid(pid.pid):
	#print("============ WVDIAL ARRET ==============")
	#subprocess.Popen(["kill", "-1", str(pid.pid)])
Hicham Brahimi's avatar
Hicham Brahimi committed

time.sleep(1)
if os.path.isfile("./.lockprocess"):
	print("=========== LIBERATION ============")
	os.remove(".lockprocess")