사용자에게 비밀번호 프롬프트를 표시하지 않고 ssh를 통해 원격 서버에 로그인하는 스크립트를 작성하려고 합니다(원격 서버는 제가 제어할 수 없으며 키 인증을 사용할 수 없습니다).
일반적으로 명령에 비밀번호를 전달하면 제대로 작동하지만 3개월마다 비밀번호를 변경하여 스크립트를 깨뜨리는 비밀번호 프롬프트가 나타나도록 요구합니다. STDOUT 및 STDERR을 통해 비밀번호 프롬프트 캡처를 시도했지만 둘 중 하나로 전송되지 않았습니다. 프롬프트를 캡처하거나 응답을 다시 보내는 방법을 잘 모르겠습니다.
테스트로 비밀번호 없이 sshing을 시도했는데 동일한 기본 동작을 얻었습니다.
ssh [email protected] 2> /dev/null
비밀번호 프롬프트가 계속 표시됩니다.
이것도 사실 ssh -T
이고ssh -t
어떤 조언이라도 대단히 감사하겠습니다.
건배
답변1
사용expect
, 또는 다른 언어로 구현됩니다(Wikipedia에는 현재 이러한 목록이 있습니다). expect
이는 바로 이러한 유형의 터미널 자동화 작업을 위해 설계되었습니다. 이 자동화를 부트스트랩하는 가장 빠른 방법은 다음과 같습니다.
autoexpect ssh [email protected]
그런 다음 필요에 따라 키보드를 혼합하고 ssh를 종료한 후 생성된 스크립트 파일을 확인합니다.