私は2台のマシン間で毎日のファイル転送をbashスクリプトにしようとしています。スクリプトはターゲットマシン上で実行され、ソースマシンからファイルを取得します。ソースマシンにはファイルが準備されていないことがありますが、これは問題ありません。SFTP/SCPで特定のエラー条件を無視するファイル転送
正常に転送された場合、および転送可能なファイルがない場合、スクリプトを0にすることをお勧めします。他の障害状態(接続性など)でスクリプトが0以外の値を終了したい。
私は以下の2つのアプローチを試みました。私はSCPで実際のエラーが何であってもリターンコードは常に1であることがわかったので、許容できるエラー状態とスクリプトを区別するのは難しいです。
sftpメソッドは、コマンドの実行中にも常に0を返します。助言がありますか?あなたはおそらくの存在をテストするためにリモートから任意のコードを実行することができますので、あなたは明らかに、パスワードなしでscpコマンドを実行している けど - 私はこれを検証していない
scpGet(){
echo "Attempting File Transfer"
scp -P $REMOTEPORT $REMOTEHOST:$REMOTEPATH $LOCALPATH
echo $?
}
sftpGet(){
cd $LOCALPATH
sftp -P $REMOTEPORT $REMOTEHOST << EOF
get $REMOTEPATH
quit
EOF
echo $?
}
Paulさん、本当にありがとうございました。さらに、私はファイルが最初にあるかどうかを確認しています。それ以外の場合はスクリプトの残りを中断しています。 – Brad87
喜んで助けてください。 :) –