GNU/Linux >> Linux の 問題 >  >> Linux

sshを使用してリモートホストにファイルが存在するかどうかを確認します

一行、適切な引用

ssh remote_host test -f "/path/to/file" && echo found || echo not found

上記の回答に加えて、簡単な方法があります:

ssh -q $HOST [[ -f $FILE_PATH ]] && echo "File exists" || echo "File does not exist";

-q はサイレント モードで、警告とメッセージを抑制します。

@Mat が述べたように、このようなテストの利点の 1 つは、-f を簡単に交換できることです。 好きなテスト演算子:-nt-d-s など...

テスト オペレーター: http://tldp.org/LDP/abs/html/fto.html


簡単なアプローチは次のとおりです。

#!/bin/bash
USE_IP='-o StrictHostKeyChecking=no [email protected]'

FILE_NAME=/home/user/file.txt

SSH_PASS='sshpass -p password-for-remote-machine'

if $SSH_PASS ssh $USE_IP stat $FILE_NAME \> /dev/null 2\>\&1
            then
                    echo "File exists"
            else
                    echo "File does not exist"

fi

動作させるには、マシンに sshpass をインストールする必要があります。


これ以上簡単なことはありません :)

ssh host "test -e /path/to/file"
if [ $? -eq 0 ]; then
    # your file exists
fi

dimo414 で提案されているように、これは次のように折りたたむことができます:

if ssh host "test -e /path/to/file"; then
    # your file exists
fi

Linux
  1. Rackspace Cloudの要点:WebコンソールでサーバーのSSHホストフィンガープリントを確認します

  2. Bash のリストに変数が存在するかどうかを確認する

  3. リテラル文字列で sed -- 入力ファイルではありません

  1. bash の改行でテキストをエコーする

  2. SSH を使用してリモート ホストからファイルを削除する

  3. リモートパスワードの入力を求める SSH による Rsync

  1. ProxyJumpを使用してプロキシまたは要塞を介してリモートホストにSSHで接続する

  2. Ssh – Sshを使用してファイルをローカルシステムにコピーし直しますか?

  3. ファイルをチェックするための1つのライナーが存在しますか?