[linux] problème script shell : exit status

problème script shell : exit status [linux] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 01-10-2003 à 16:59:14    

J'ai un script shell qui envoit un fichier par ftp,
j'aimerais récupérer l'exit status pour relancer le transfert
si tout ne s'est pas bien déroulé.
 
voici mon code :

Code :
  1. ftp -n 192.168.0.8 <<END_SCRIPT
  2. quote USER user
  3. quote PASS pass
  4. bin
  5. put essaiShell.sh
  6. quit
  7. END_SCRIPT
  8. EXITSTATUS=$?
  9. if [ $EXITSTATUS == "0" ]
  10. then
  11.         echo "OK"
  12. else
  13.         echo "NOK"
  14. fi


 
Normalement, je dois afficher OK si tout se passe bien,
NOK dans les autres cas.
Le problème c'est qu'il affiche OK dans tous les cas.
 
Voici un exemple :
 
Quand tout se passe bien :

Code :
  1. thor:/cron # ./essaiShell.sh 
  2. Connected to 192.168.50.108.
  3. 220 ProFTPD 1.2.7 Server (CET FTP) [intranet]
  4. 331 Password required for cet.
  5. 230 User cet logged in.
  6. 200 Type set to I.
  7. local: essaiShell.sh remote: essaiShell.sh
  8. 500 EPSV not understood.
  9. 227 Entering Passive Mode (192,168,50,108,149,107).
  10. 150 Opening BINARY mode data connection for essaiShell.sh
  11. 100% |*****************************************************************************************|  1009       6.08 MB/s    00:00 ETA
  12. 226 Transfer complete.
  13. 1009 bytes sent in 00:00 (253.23 KB/s)
  14. 221 Goodbye.
  15. OK


 
et quand ça ne va pas :
 

Code :
  1. thor:/cron # ./essaiShell.sh 
  2. Connected to 192.168.50.108.
  3. 220 ProFTPD 1.2.7 Server (CET FTP) [intranet]
  4. 331 Password required for cet.
  5. 230 User cet logged in.
  6. 200 Type set to I.
  7. local: essaiShiell.sh remote: essaiShiell.sh
  8. ftp: local: essaiShiell.sh: No such file or directory
  9. 221 Goodbye.
  10. OK


 
Le fichier que je veux transférer n'existe pas,
et pourtant le code de sortie de ftp est le même.
 
Comment puis-je détecter une erreur ?


Message édité par warp le 01-10-2003 à 17:01:48

---------------
Il n'est pas nécéssaire de réussir pour persévérer.
Reply

Marsh Posté le 01-10-2003 à 16:59:14   

Reply

Marsh Posté le 01-10-2003 à 18:20:38    

j'avais eu le même problème un moment, faut utiliser ncftpput (fourni avec ncftp)
 
ça donne ça :
 


#!/bin/sh
 
ncftpput -u user -p pass 192.168.0.8 /REP_DISTANT /REP_LOCAL/essaiShell.sh
 
if [ "$?" = "0" ] ; then
    echo "OK"
else
    echo "NOK"
fi


Message édité par BMOTheKiller le 01-10-2003 à 18:21:55
Reply

Marsh Posté le 02-10-2003 à 08:52:41    

J'ai en effet utilisé ncftpput pour transférer un répertoire entier, mais ici j'ai besoin de transférer quelques fichiers choisis.
Si j'utilise ncftpput, je dois ouvrir autant de connexions que j'ai de fichiers à transférer,
l'établissement de la connexion étant relativement lente,
je n'ai pas trop envie de faire ainsi.
 
......mais effectivement ça fonctionne avec ncftpput.
Je crois que je vais copier les fichiers choisis dans un répertoire, et transférer ce répertoire entier.


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
Reply

Marsh Posté le 02-10-2003 à 10:07:37    

Utilise lftp !
 

Code :
  1. lftp -e 'cd /; mput toto; exit' ftp://toto:toto@localhost/; echo $?


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed