-
Notifications
You must be signed in to change notification settings - Fork 0
/
IndicesExport.py
99 lines (84 loc) · 3.71 KB
/
IndicesExport.py
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
# -*- coding: utf-8 -*-
"""
Created on Mon Jul 17 16:34:49 2017
@author: donatien
"""
import os
import sys
import subprocess
import argparse
import csv
import glob
import shutil
def exportRasters(inUrl, inServer, outUrl, outServer, login, password):
"""
Exporte les indices calcules sur un serveur vers un autre
"""
# repertoires a exporter
indices = {"Day":"tempjour_modis_bretagne", "Night":"tempnuit_modis_bretagne",\
"NDVI":"ndvi_modis_bretagne", "EF":"ef_modis_bretagne"}
#liste tous les dossiers/fichiers
for path, dossiers, rasters in os.walk(inServer):
#pour chaque fichier
for raster in rasters :
#s'il fait parti des fichiers a exporter
for indice in indices.keys() :
if indice == raster[:-13] :
# existe t'il dans le dossier de destination ?
resp = subprocess.call(['sshpass', '-p', "%s" % (password), 'ssh',\
'%s@%s' % (login, outUrl), 'test', '-e',\
'%s/%s/%s' %(outServer, indices[indice], raster)])
#si non, exporte le fichier
if resp == 1:
print ("Export")
command = 'sshpass -p "%s" scp %s/%s/%s %s@%s:%s/%s/%s'\
% (password, inServer, indice, raster, login, outUrl, outServer, indices[indice], raster)
os.system(command)
#si oui, ne fait rien
elif resp == 0 :
print "Fichier %s deja exporte" % (raster)
#sinon, code erreur et arret
else :
print "Code erreur ssh, arret"
print resp
sys.exit()
# nettoyage des repertoires
dossiers = glob.glob(inServer+"/*")
for dossier in dossiers :
if os.path.basename(dossier) != "log_produits.txt":
shutil.rmtree(dossier)
if __name__ == "__main__":
if len(sys.argv) == 1:
prog = os.path.basename(sys.argv[0])
print ' '+sys.argv[0]+' [options]'
print " Help : ", prog, " --help"
print " or : ", prog, " -h"
sys.exit(-1)
else:
usage = "usage: %prog [options] "
parser = argparse.ArgumentParser(description="Script pour calculer\
l'evaporative fraction (EF) a partir de donnees MODIS.")
parser.add_argument("-inurl", dest="inUrl", action="store",
help="Calc server url")
parser.add_argument("-indst", dest="inServer", action="store",
help="Datas directory in server")
parser.add_argument("-outurl", dest="outUrl", action="store",
help="Geoserver server url")
parser.add_argument("-outdst", dest="outServer", action="store",
help="Datas directory out server")
parser.add_argument("-coCopie", dest="loginCop", action="store",
help="Connexion file with login and password \
like login:password", default="user")
args = parser.parse_args()
print("\nEtape 3 : Export des produits de psncalc vers geowww")
if len(glob.glob(args.inServer+"/*")) == 1 :
print("Aucune image a exporter, arret")
sys.exit()
# Recupere le login et password dans un fichier
with open(args.loginCop, "r") as coFile:
reader = csv.reader(coFile)
for row in reader:
login = row[0].split(":")[0]
password = row[0].split(":")[1]
break
exportRasters(args.inUrl, args.inServer, args.outUrl, args.outServer, login, password)