SFTPコマンドを使用してファイルがダウンロードされたかどうかをテストする

SFTPコマンドを使用してファイルがダウンロードされたかどうかをテストする

SFTPコマンドの戻りコードを取得する方法は?

ディレクトリからすべてのファイルをダウンロードするには、これを行います。ただし、ディレクトリが空の場合、コマンドは次を返します。1

実際のコードはどのように取得できますかFile not found

echo 'get * /var/download' | sftp -b - user@host

または、解決策はエラーを無視/抑制してFile not found返すことです0(すべてのエラーを抑制せずにこのエラーのみ)。

ベストアンサー1

OpenSSHはsftp成功した場合は0、エラーの場合は1を返します。

これ以上の区別は提供されません。


ファイルをダウンロードする前にディレクトリにファイルがあるかどうかをテストするには、次のようにします。

echo "ls /remote/path/*" | sftp -b - [email protected]
if [ $? -eq 0 ]
then
    echo "Files exist, can download now"

    echo 'get /remote/path/* /local/path/' | sftp -b - [email protected]
    if [ $? -eq 0 ]
    then
        echo "Files successfully downloaded"
    else
        echo "Files exist, but failed to download"
    fi
else
    echo "Files do not exist"
fi

同様の質問については、以下を参照してください。ローカルLinuxスクリプトでリモートSFTPサーバーにファイルがあるかどうかを確認する方法は?

おすすめ記事