Bonjour,

voila j'ai écrit un script en shell qui récupérer des fichiers les dé-zippe et les déposer par FTP, mais mon script est basique.
pouvez vous m'aider à l'améliorer svp ?

notamment comment sécurisé le fait que si mon transfert FTP, n'a pas fonctionné il ne faut pas effacé le fichier source, car dans mon programme il efface le fichier source dans tout les cas.

voici le script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
#!/bin/bash
#
# Programme qui dézipe les fichier et qui dépose un fichier clé ".START"
 sur le serveur e
 
#Envoi un fichier sur le serveur 1
function s1_FTP_put()
{
	if [[ $# != 1 ]]
then
	echo "$FILES = Nombre de parametres passes en arguments insuffisant : $#" 
	return 99
else 
	#Transfert par FTp
 
HOST='ftp.test.com'
PORT='21'
USER='users1'
PASSWD='password'
 
 
cd /home/e/portion/  
 
echo 'FTPing'
 
ftp -i -n $HOST $PORT << END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd A_FIRE/
pwd
put $1
ls
quit
 
END_SCRIPT
 
fi	
 
}
 
#Envoi le fichier zip sur le serveur 2
function s2_FTP_put()
{
	if [[ $# != 1 ]]
then
	echo "$FILES = Nombre de parametres passes en arguments insuffisant : $#" 
	return 99
else 
	#Transfert par FTp
 
HOST='XX.XX.XX.XX'
PORT='21'
USER='users_ftp'
PASSWD='password'
 
 
cd /home/e/production/     
 
echo 'FTPing'
 
ftp -i -n $HOST $PORT << END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /users/cegedim_ftp/home/edokial
pwd
put $1
ls
quit
 
END_SCRIPT
 
fi	
 
}
 
FICHIER="*EF*.zip"
 
cd /home/e/production/
 
if [ -f $FICHIER ]; then
   echo "$FICHIER existe"
 
 
	cd /home/e/production/
 
	DOSSIER_SOURCE=/home/e/production
	NUMERO_CHAMP="5" #permet au cut d'étre a la bonne longueur
 
 
	#------------------------------------------------------------------------------------------------
	SEARCH_FILES="*.zip"
	NOM_APPLICATION="Fichier_1"
	SUFFIXE="*.zip"
 
	#compte le nombre de fichier :
	nbFindFiles=$(ls  $DOSSIER_SOURCE/$SEARCH_FILES | wc -l) 
	echo "Nbr de fichier $SEARCH_FILES = " $nbFindFiles
 
	#Si on a des fichiers
	if (( $nbFindFiles > 0));
	then
	#tableau avec les noms de fichier
	table=( $(ls $DOSSIER_SOURCE/$SEARCH_FILES |  cut -d"/" -f$NUMERO_CHAMP) )
	echo -e "$DOSSIER_SOURCE/$SEARCH_FILES \n"
		for filename in $(ls $DOSSIER_SOURCE/$SEARCH_FILES|  cut -d"/" -f$NUMERO_CHAMP) ;
		do 
				#On dézippe le fichier
				echo -e $filename "\n"
				unzip $filename -d $DOSSIER_SOURCE
				touch $filename".START"
				#on copie le fichier sur le FTP
				s1_FTP_put $filename".START"
				s2_FTP_put $filename
				s2_FTP_put $filename".START"
				rm $filename".START"
				rm $filename
 
		done
	fi
	#-------------------------------------------------------------------------------------------
	echo "Fichier E : Controle - OK" | mail -s "Fichier E : Controle - OK" Mika@tt.fr
else
   echo "$FICHIER n'est pas present"
fi
Et comment améliorer mon code.

merci à vous.