Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/06/2011, 08h49   #1
Nouveau Membre du Club
 
Avatar de Mika2008
 
Inscription : novembre 2007
Messages : 121
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 121
Points : 27
Points : 27
Par défaut amélioration de mon script

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 :
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.
Mika2008 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 09h52   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

oublie les commandes ls, wc, et cut, le shell dispose de capacités pour les remplacer.

pourquoi deux fonctions pour si peu de choses qui changent : en fonction d'un seul paramètre supplémentaire passé à la fonction, il est possible de définir les mêmes variables avec des valeurs différentes.


Citation:
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.
dans la commande ftp, fait en sorte de lister le fichier transmis, ensuite utilise une variable avec une substitution de commandes, et teste sa valeur par rapport au fichier qui devrait avoir été transmis, ou simplement si elle existe, alors supprime le fichier source.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h26.


 
 
 
 
Partenaires

Hébergement Web