SSH 명령을 사용하여 응답 캡처 [닫기]

SSH 명령을 사용하여 응답 캡처 [닫기]

sshpass와 ssh를 사용하여 Linux 시스템에 명령을 보낸 다음 연결을 끊습니다. 명령은 제대로 전송되었지만 예상한 응답을 얻지 못했습니다. 로그인 후 호스트가 5개의 빈 줄을 보낸 다음 5줄의 배너를 보내는 것을 확인했습니다.

ssh 명령(명령을 인수로 전달할 때)은 첫 번째 빈 줄만 반환하는 것처럼 보입니다. 모든 텍스트를 반환하도록 하는 방법이 있나요? (또는 반환하기 전에 모든 텍스트를 캡처하기 위해 5초 동안 기다리십시오)


명령은 다음과 같으며 응답을 Bash 변수로 캡처합니다.

RESPONSE=$(sshpass .... ssh..... "my command")

답변1

이를 통해 호스트의 출력을 캡처할 수 있습니다.

user@host /tmp# output=$(ssh login@domain "ls")
login@domain's password:
user@host /tmp# echo $output
file1
file2
file3

또 다른 솔루션은 출력뿐만 아니라 배너를 포함한 모든 것을 기록하므로 훨씬 더 좋습니다.

ssh user@domain |tee /tmp/output

여기서 /tmp/output에는 전체 로그가 포함됩니다.

답변2

벽을 캡처하려면 Expect 스크립트를 생성해야 합니다.

#!/usr/bin/expect -f
spawn sshpass -p XXX ssh login@domain
expect "$ "
send "ls\r"
expect "$ "
send "exit\r"

다음과 같이 출력을 캡처합니다.

OUTPUT=$(expect expectscript)

SSH 키를 사용해야 합니다.

관련 정보