SSH 서버에 프로그래밍 방식으로 로그인하고 프롬프트를 캡처하는 방법은 무엇입니까?

SSH 서버에 프로그래밍 방식으로 로그인하고 프롬프트를 캡처하는 방법은 무엇입니까?

사용자에게 비밀번호 프롬프트를 표시하지 않고 ssh를 통해 원격 서버에 로그인하는 스크립트를 작성하려고 합니다(원격 서버는 제가 제어할 수 없으며 키 인증을 사용할 수 없습니다).

일반적으로 명령에 비밀번호를 전달하면 제대로 작동하지만 3개월마다 비밀번호를 변경하여 스크립트를 깨뜨리는 비밀번호 프롬프트가 나타나도록 요구합니다. STDOUT 및 STDERR을 통해 비밀번호 프롬프트 캡처를 시도했지만 둘 중 하나로 전송되지 않았습니다. 프롬프트를 캡처하거나 응답을 다시 보내는 방법을 잘 모르겠습니다.

테스트로 비밀번호 없이 sshing을 시도했는데 동일한 기본 동작을 얻었습니다.

ssh [email protected] 2> /dev/null

비밀번호 프롬프트가 계속 표시됩니다.

이것도 사실 ssh -T이고ssh -t

어떤 조언이라도 대단히 감사하겠습니다.

건배

답변1

사용expect, 또는 다른 언어로 구현됩니다(Wikipedia에는 ​​현재 이러한 목록이 있습니다). expect이는 바로 이러한 유형의 터미널 자동화 작업을 위해 설계되었습니다. 이 자동화를 부트스트랩하는 가장 빠른 방법은 다음과 같습니다.

autoexpect ssh [email protected]

그런 다음 필요에 따라 키보드를 혼합하고 ssh를 종료한 후 생성된 스크립트 파일을 확인합니다.

관련 정보