1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Linux】if文の評価式でリモートサーバの特定のファイル有無を評価する方法

Last updated at Posted at 2020-12-11

#はじめに
お疲れさまです。
if文の評価式でリモートサーバの特定のファイル有無を評価する方法に地味に苦戦したため、誰かの助けになるかはさておき、残すことにしました。
OSはRHEL7を想定しています。

#本題

sshコマンドは以下のように実行すると、リモートサーバ上でコマンドを実行できます。

[user@host001 /tmp]$ ssh [ユーザ名]@[ホスト名] "ls -l"

そしてこの場合に出力され得る戻り値は以下の通りです。

戻り値 状況
0 sshコマンドとlsコマンドが正常終了した
1 or 2 ls -lコマンドがエラーとなった
255 sshコマンドがエラーとなった

上記の表だけでは説明不足かもしれませんが、sshコマンドが異常終了した場合は、戻り値として「255」が返ってきます。
一方でリモートで実行したコマンドが異常終了した場合は、そのコマンドの戻り値が返ってきます。

今回はこの仕様を使用して、リモートサーバの特定のファイル有無を評価します。
結論は以下の通りです。

if [ `ssh [ユーザ名]@[ホスト名] "test -e [リモートファイル名]"` -eq 0 ]; then
 処理
fi

詳細は控えますが、「test -e [ファイル名]」でファイルの存在有無を評価可能であり、ファイルが存在する場合は戻り値は「1」が返ってきます。sshでそれをリモートサーバ上で実行するだけです。
ただしこの方法だとsshコマンド自体が異常終了となった場合もファイルが存在しないのと同じ扱いになります。

sshのエラーも検知しつつこれくらいシンプルな方法があれば知りたいものです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?