server-2
からsshを介してリモートサーバー(server-1
)で実行するスクリプトがあり、その出力をfile.log
のserver-1
という名前のログファイルに書き込む必要があります。
私はこれを試しています:sc.sh
echo 'testing'
cp $HOME/dir1/file1 $HOME/dir2
ここで、sshを介してsc.sh
を実行します。
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
コマンドの後のif条件を確認する必要がありますか?
チェック${PIPESTATUS[0]}
うまくいきました...
if [ ${PIPESTATUS[0]} -eq 0 ]; then
echo "successfull"
fi
echo ${PIPESTATUS[*]}
すべてのパイプラインコマンドの終了コードを出力します。
答え:「sshシェルの出力をログに記録する方法は?」です
例えば.
ssh user@remote_Host "command" > local_log_file.txt
または
sshpass -p 'psswd' ssh username@server-2 "echo 'testing'; cp dir1/file1 dir2;" > local_machine_ssh_log.txt
リモートサーバーでcp
cmmandの結果を確認する場合は、送信したコマンドの一部として、直後にリモートホストでif statementを実行することをお勧めします。 cp
コマンドの実行
何かのようなもの:
sshpass -p 'psswd' ssh username@server-2 "echo 'testing'; cp dir1/file1 dir2;if [ $? -eq 0 ]; then echo "successfully copied"; else echo "failed copying due to incorrect path"; fi" > local_machine_ssh_log.txt