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.