Envoi de fichiers d'un répertoire avec un temoin

Fermé
richy - Modifié le 10 nov. 2022 à 11:11
mamiemando Messages postés 33140 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 juin 2024 - 10 nov. 2022 à 11:26

binjour,

J'ai un soucis sur mon script UNIX, qui me permet d'envoyer la totalité des fichier générés sur mon serveur AIX dans le répertoire "/home/sortie/encours".

1- Avant d'envoyer les fichiers générés dans "/home/sortie/encours" , je dois calculer le nombre de ces fichiers que je mets dans un fichier témoin "depot.tem" dans le répertoire "/home/sortie/temp/depot.tem

2- J'envoie d'abord la totalité des fichiers générés par FTP vers un PC distant dans le répertoire  "D:\reception" pour les consommer.

3- Puis j'envoie le fichiers témoin "/home/sortie/temp/depot.tem" en dernier lieu sur le même PC distant dans le même répertoire.

==> Mon soucis c'est que mon fichier témoin ne se transfère après le transfert des fichiers.

Voici mon script:

cd /home/sortie/encours/
chmod /home/sortie/encours/* 1>/dev/null 2>/dev/null
> /home/sortie/temp/depot.tem
chmod 775 /home/sortie/temp/depot.tem 1>/dev/null 2>/dev/null
if ls /home/sortie/encours/* 1>/dev/null 2>/dev/null
then
    ftp -n 192.168.30.222 >/home/sortie/rapport_relv 2>/home/sortie/rapport_err <<fin
quote USER $USER
quote PASS $PASSWD
verbose
#binary
lcd /home/sortie/encours/
cd /reception
mput *
cd /reception
lcd /home/sortie/temp
cd /reception
mput depot.tem
bye
fin
    result=`cat /home/sortie/rapport_relv | grep 226 | wc -l`
    #echo $result
    echo
    if [ $result = '0' ]
    then
        echo
        echo ">>>>> TRANSFERT DES FICHIERS ECHOUE, PROBLEME FTP AVEC LE PC "
        echo
        sleep 5
        exit
    else
        echo
        echo ">>>>> TRANSFERT DES FICHIERS EN COURS..... PATTIENTEZ!"
        echo
        sleep 3
        echo
        echo ">>>>> TRANSFERT DES FICHIERS TERMINE AVEC SUCCES VERS LE PC "
        echo
        mv /home/sortie/encours/* /home/sortie/archive 2>/dev/null
        sleep 3
    fi
else
    echo
    echo ">>>>> REPERTOIRE VIDE, PAS DE FICHIERS A ENVOYER VERS LE PC "
    echo
    echo
    sleep 5
fi
exit
A voir également:

2 réponses

jee pee Messages postés 39828 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 9 juin 2024 9 217
9 nov. 2022 à 12:24

Bonjour,

Que disent les fichiers log et erreur du ftp ?

Et si tu fais les manip à la main ?

Pourquoi 3 fois cd /reception ? le premier doit suffire.

D'une façon formelle, mput c'est le transfert de plusieurs fichiers (multiple put) pour un fichier c'est put. Mais je ne sais plus si mput d'un seul fichier pose soucis, ou pas, le ftp à la main, c'est loin ;-)


0
mamiemando Messages postés 33140 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 juin 2024 7 756
10 nov. 2022 à 11:26

Bonjour,

Plusieurs choses sont bizarres dans ton script :

  • A plusieurs endroits, tu rediriges les résultats de commandes dans /dev/null. C'est la plupart du temps non seulement inutile (pour les chmod), mais aussi une mauvaise idée, car les messages d'erreurs que tu masques sont potentiellement importants (pour les mv).
  • l2: La commande chmod en question ne spécifie pas les nouveaux droits. Par ailleurs pourquoi faire un chmod ?
  • l3: cette ligne seule ne semble pas avoir de sens
  • l4: pas besoin de corriger les droits a priori. Normalement ce n'est pas une considération interne programme si le fichier n'est pas créé par le programme. De plus, le programme ne pourra pas changer les droits à moins que l'utilisateur qui le lance soit root ou déjà propriétaire du fichier. De manière générale, corriger des droits à l'intérieur d'un programme est rarement indiqué.
  • l5: le test me paraît étrange. Voir cette discussion.
  • l29, 35, 40: pourquoi attendre ?
  • l33, 37: à ce stade le transfert est déjà fait
  • Comme le souligne jee pee, la partie FTP se simplifie et pour un simple fichier tu devrais utiliser put :
ftp -n 192.168.30.222 >/home/sortie/rapport_relv 2>/home/sortie/rapport_err <<fin
quote USER $USER
quote PASS $PASSWD
verbose
cd /reception
#binary
lcd /home/sortie/encours/
mput *
lcd /home/sortie/temp
put depot.tem
bye
fin

Bonne chance

0