2009-06-03 7 views
0

La plupart des clients FTP renvoient un code de sortie "0" même si une erreur s'est produite lors du transfert de fichiers.Gestion des codes d'erreur FTP

Je suis confronté à un problème, où je vérifie les codes d'erreur. Mais mon script obtient le numéro de code d'erreur dans les octets envoyés et la validation échoue.

Je l'ai essayé comme ceci:

if [[ egrep '^202 |^421 |^426 |^450 |^500 |^501 |^503 |^530 |^550 |^553 |^666 |^777 |^999 ' test.log ]] echo " Error in FTP !!! " else echo " FTP Successful !!!" fi 

Quelqu'un peut me aider comment séparer le code d'erreur d'autres chiffres qui viennent avec le message « octet envoyé » par exemple « 220 octets envoyés en 0.001 secondes (220 kilo-octets/sec) "?

Répondre

0

Je suppose que vous devez être un peu plus spécifique dans votre motif, c'est-à-dire, prendre le début du message après le code d'erreur dans le motif.

1

Lorsqu'un code d'erreur est renvoyé, le message contient-il uniquement le code d'erreur et aucun texte après? Si oui, en utilisant la fin de $ d'ancrage de la ligne fonctionnerait:

if [[ egrep '^202$ |^421$ |^426$ |^450$ |^500$ |^501$ |^503$ |^530$ |^550$ |^553$ |^666$ |^777$ |^999$ ' test.log ]] echo " Error in FTP !!! " else echo " FTP Successful !!!" fi 
0

Utilisez wget ou curl. Tous les deux supportent ftp, ainsi que http et https, et retourneront le statut de sortie désiré. Et ils sont tous les deux open source.

1

Utilisation de la Perl variante des expressions régulières, vous pouvez utiliser quelque chose comme ceci:

if [[ grep -P '^(([45][0-9][0-9])(?-i)(?!bytes received))|\?|(\w+:)|([Nn]ot connected)' test.log ]] echo " Error in FTP !!! " else echo " FTP Successful !!!" fi 

Les tests réguliers d'expression pour toutes sortes de codes d'erreur FTP communs et certains du côté client. Il utilise une expression anticipée '(?! ...)' pour tester la non-existence des "octets reçus" littéraux qui répondent à vos besoins - et les miens aussi. ;-)

L'expression est loin d'être parfaite et peut être étendue selon vos besoins.