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