SSH シェルの出力を記録し、終了状態を保存します。

SSH シェルの出力を記録し、終了状態を保存します。

server-2SSHを介してリモートサーバー()で実行したいスクリプトがいくつかあり、その出力をonというログファイルserver-1に書き込む必要があります。file.logserver-1

私はこれを試しています:sc.sh

echo 'testing'
cp $HOME/dir1/file1 $HOME/dir2

sc.shSSHを介して実行します。

sshpass -p 'psswd' ssh username@server-2 "bash -s" < sc.sh | tee -a file.log
if [ $? -eq 0]; then
  echo "successfully executed the script file"
  .
  .
  .
else
  echo "failed copying due to incorrect path"
fi

コマンドがtee -a file.logスクリプトファイルのコマンドに失敗した場合でも、常に0を返します。ログファイルへの書き込み方法とコマンド終了コードに従って動作する必要があるsshコマンドの後の条件を確認する必要がありますか?ssh

ベストアンサー1

確認は${PIPESTATUS[0]}私にとって効果的でした...

if [ ${PIPESTATUS[0]} -eq 0 ]; then
  echo "successfull"
fi

echo ${PIPESTATUS[*]}パイプで接続されたすべてのコマンドの終了コードを印刷します。

おすすめ記事