sftp アップロードの成功をシェルでどのように判断するか
シェルでは、 $? 変数を使用して直前のコマンドの実行ステータスを確認できます。コマンドが正常に実行されると、 $? は 0 になります。コマンドが失敗すると、 $? は 0 以外の値になります。
この特性を利用して以下の方法でsftpアップロードの成否を判断できます
- sftpコマンドでファイルをアップロードして、アップロード結果を一時ファイルに保存する
- sftp user@host:/path/to/destination ‘localfile’ > upload.log 2>&1
- ここではsftpコマンドをupload.logに出力リダイレクトしています。
- upload.logファイルの内容を確認し、「正常にアップロードされました。」等のキーワードがファイルに含まれている場合はアップロード成功、含まれていない場合はアップロード失敗と判断します。
- grep -q “Successfully uploaded” upload.log && echo “Upload successful” || echo “Upload failed”
- grepコマンドを使用して、upload.logファイルに「Successfully uploaded」というキーワードが含まれているか検索し、ifステートメントを使用してアップロード結果を判定しています。
SFTPコマンドの実行結果判断は、ファイルアップロードの成功を保証するものではなく、ネットワークの中断や権限上の問題によりアップロードが失敗していたとしても成功と判定されることがあります。ファイルがアップロードされたことをより確実に判断するには、ターゲットサーバー上のファイルの存在とサイズを確認するなど追加の手段を検討してください。