SSH를 통해 원격 명령을 실행하고 해당 명령의 출력을 구문 분석해야 합니다. 원격 stdout/stderr는 ssh를 통해 로컬 ssh 명령의 stdout/stderr에 있는 로컬 상자로 제대로 전달됩니다. 그러나 ssh가 로컬 stdout/stderr에서 자체 상태/오류 메시지를 다중화하면 실패합니다.
로컬 ssh 명령에 자체 메시지를 로컬 파일로 보내도록 지시하는 방법이 있습니까? 아니면 원격 명령이 자체 출력을 원격 파일 쌍으로 보낸 다음 다시 scp하여 안전하게 구문 분석하도록 해야 합니까?
답변1
SSH 클라이언트에는 자세한 내용을 줄이거나 제거하기 위한 두 개의 스위치가 있습니다.
에서남자 SSH:
-q Quiet mode. Causes all warning and diagnostic messages to be
suppressed.
-y Send log information using the syslog(3) system module. By
default this information is sent to stderr.
스위치 -y
는 아마도 원하는 것이지만 모든 버전에서 사용할 수 있는 것은 아닙니다.
Ubuntu의 현재 버전(OpenSSH_6.0p1 Debian-3ubuntu1, OpenSSL 1.0.1c 2012년 5월 10일)은 이를 지원하지만 다른 버전에서는 지원하지 않을 수도 있습니다.
원하는 경우 ssh 관련 로그를 다른 로그 파일에 저장할 수 있습니다.
예를 들어 rsyslog를 사용하는 경우 파일을 만들고 /etc/rsyslog.d/ssh.log
다음 줄을 저장합니다.
:msg,contains,"ssh:" /var/log/ssh.log
이제 다음 명령을 실행하여 rsyslog를 다시 시작하십시오.
sudo service rsyslog restart
PID를 사용하여 특정 SSH 프로세스에 관한 로그에 액세스하려면 $PID
grep을 사용할 수 있습니다.
grep "ssh\[$PID\]" /var/log/ssh.log