17 votes

bash : vérifier si le fichier distant existe en utilisant scp

Je suis en train d'écrire un script bash script pour copier un fichier depuis un serveur distant, vers ma machine locale. J'ai besoin de vérifier si le fichier est disponible, afin de pouvoir prendre une autre mesure s'il n'est pas là.

Je sais comment tester l'existence d'un fichier local, mais l'utilisation de scp complique un peu les choses. Le bon sens me dit qu'une solution serait d'essayer de scpter le fichier de toute façon, et de vérifier le code de retour de la commande scp. Est-ce la bonne façon de procéder ?

Si oui, comment puis-je tester le code de retour de l'invocation scp ?

15voto

sysfault Points 2761

En utilisant ssh + du code shell intégré dans la ligne de commande ; utilisez cette méthode lorsque vous devez prendre une décision avant que le transfert de fichiers n'échoue ;

ssh remote-host 'sh -c "if [ -f ~/myfile ] ; then gzip -c ~/myfile ; fi" ' | gzip -dc > /tmp/pkparse.py

si vous voulez transférer des répertoires, vous pouvez commencer par le "tar".

si vous voulez utiliser scp, vous pouvez vérifier le code de retour comme ceci :

if scp remote-host:~/myfile ./ >&/dev/null ; then echo "transfer OK" ; else echo "transfer failed" ; fi

Cela dépend vraiment du moment où il est important pour vous de savoir si le fichier est là ou non ; avant que le transfert ne commence (utilisez ssh+sh) ou une fois qu'il est terminé.

0voto

kurumi Points 10096

Bien, étant donné que vous pouvez utiliser scp vous pouvez essayer d'utiliser ssh pour dresser une liste et voir si le fichier est le leur ou non avant de poursuivre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X