
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サーバーにファイルがあるかどうかを確認する方法は?