So prüfen Sie, ob eine Datei auf einem Remote-Server vorhanden ist

So prüfen Sie, ob eine Datei auf einem Remote-Server vorhanden ist

Ich möchte testen, ob eine Datei irgendwo auf einem Remote-Linux-Server vorhanden ist (z. B. /var/run/test_daemon.pid), ohne mich interaktiv beim Server anzumelden. Beispielsweise möchten Sie möglicherweise, dass sich Ihr Skript anders verhält, je nachdem, ob eine bestimmte Datei auf einem Remote-Server vorhanden ist oder nicht.

Antwort1

Der folgende Befehl reicht aus, wenn Sie genau wissen, wo sich die Datei befindet

  ssh user@remote_server  test -f  /path/to/file/filename && echo "YES" || echo "no"

Sie benötigen den Teil, der mit beginnt, &&da „Test“ keine Ausgabe erzeugt und Sie nicht feststellen können, ob die Datei gefunden wurde oder nicht.

Wenn Sie nur den Namen der Datei kennen, aber nicht sicher sind, wo sie sich befindet,

 ssh user@remote_server find / -type f -name 'name_of_file*' -print

durchsucht das gesamte Dateisystem nach Ihrer Datei.

Beachten Sie die Verwendung von SSH: Es stellt eine Verbindung zum Remote-Server her, führt den Befehl nach dem Ausdruck aus user@remote_server, öffnet jedoch keine interaktive Sitzung: Die Kontrolle wird an die Shell auf Ihrem lokalen PC zurückgegeben.

Antwort2

if [[ "`ssh -q user@hostname ls /dir/filename.abc 2>dev/null`" == "/dir/filename.abc" ]] 
then 
echo "file exists"
else
echo "file does not exist"
fi

verwandte Informationen