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