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 :
Et comment améliorer mon code.
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
merci à vous.
Partager