リモート 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