IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

amélioration de mon script


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier Avatar de Mika2008
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 176
    Points : 71
    Points
    71
    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 : 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.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 559
    Points : 19 397
    Points
    19 397
    Par défaut
    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.


    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'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [Batch] améliorer mon script
    Par ignem18 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 13/06/2014, 18h13
  2. [MySQL] Amélioration de mon script
    Par lumycaan dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 23/07/2009, 14h41
  3. [langage]erreur dans mon script
    Par Fabouney dans le forum Langage
    Réponses: 11
    Dernier message: 30/06/2005, 14h58
  4. Tcsh - Mon script ne marche pas
    Par Aramis dans le forum Linux
    Réponses: 5
    Dernier message: 13/05/2004, 18h26
  5. Mon script cron n'est pas pris en compte
    Par tomnie dans le forum Linux
    Réponses: 11
    Dernier message: 31/03/2004, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo