リモートサーバーにファイルが存在するかどうかを確認する方法

リモートサーバーにファイルが存在するかどうかを確認する方法

リモート Linux サーバー (例: /var/run/test_daemon.pid) のどこかにファイルが存在するかどうかを、サーバーに対話的にログインせずにテストしたいとします。たとえば、特定のファイルがリモート サーバーに存在するかどうかに応じて、スクリプトの動作を変えたい場合があります。

答え1

ファイルの正確な場所がわかっている場合は、次のコマンドで十分です。

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

&&test では出力が生成されず、ファイルが見つかったかどうかがわからないため、で始まる部分が必要です。

そうでなければ、ファイル名は分かっているが、その所在が分からない場合は、

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

ファイルシステム全体でファイルを検索します。

ssh の使用に注意してください。リモート サーバーに接続し、式に続くコマンドを実行しますuser@remote_serverが、対話型セッションは開きません。制御はローカル PC のシェルに返されます。

答え2

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

関連情報