server-2
SSHを介してリモートサーバー()で実行したいスクリプトがいくつかあり、その出力をonというログファイルserver-1
に書き込む必要があります。file.log
server-1
私はこれを試しています:sc.sh
echo 'testing'
cp $HOME/dir1/file1 $HOME/dir2
今sc.sh
SSHを介して実行します。
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[*]}
パイプで接続されたすべてのコマンドの終了コードを印刷します。
答え2
回答:「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
リモートサーバーでコマンドの結果を確認するには、次のコマンドを実行することをお勧めします。if文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