une ligne, citation correcte
ssh remote_host test -f "/path/to/file" && echo found || echo not found
En plus des réponses ci-dessus, il existe une manière abrégée de le faire :
ssh -q $HOST [[ -f $FILE_PATH ]] && echo "File exists" || echo "File does not exist";
-q
est en mode silencieux, il supprimera les avertissements et les messages.
Comme @Mat l'a mentionné, l'un des avantages de tester comme celui-ci est que vous pouvez facilement échanger le -f
pour n'importe quel opérateur de test que vous aimez :-nt
, -d
, -s
etc...
Opérateurs de test : http://tldp.org/LDP/abs/html/fto.html
Voici une approche simple :
#!/bin/bash
USE_IP='-o StrictHostKeyChecking=no [email protected]'
FILE_NAME=/home/user/file.txt
SSH_PASS='sshpass -p password-for-remote-machine'
if $SSH_PASS ssh $USE_IP stat $FILE_NAME \> /dev/null 2\>\&1
then
echo "File exists"
else
echo "File does not exist"
fi
Vous devez installer sshpass sur votre machine pour le faire fonctionner.
Rien de plus simple que ça :)
ssh host "test -e /path/to/file"
if [ $? -eq 0 ]; then
# your file exists
fi
Comme suggéré par dimo414, cela peut être réduit à :
if ssh host "test -e /path/to/file"; then
# your file exists
fi