![스크립트가 예정대로 비밀번호를 보낼 것으로 예상되지 않습니다.](https://linux55.com/image/109756/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EA%B0%80%20%EC%98%88%EC%A0%95%EB%8C%80%EB%A1%9C%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EB%A5%BC%20%EB%B3%B4%EB%82%BC%20%EA%B2%83%EC%9C%BC%EB%A1%9C%20%EC%98%88%EC%83%81%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
이 내용을 읽으려고 했지만 왜 이런 일이 발생하는지 이해가 되지 않습니다.
Expect가 비밀번호를 보내면 터미널에 일반 텍스트 에코로 표시되고 이어서 "죄송합니다. 다시 시도해 주세요."가 표시됩니다. 나타나다.
스크립트는 다음과 같습니다
#!/usr/bin/expect -f
spawn bash
send -- "sudo (many tasks)\r"
expect -exact "\[sudo\] password for elade: "
send -- "password\r"
expect -exact "[email protected]'s password: "
send -- "password\r"
expect "@"
send -- "echo Done; sleep 1; exit\r"
expect eof
첫 번째 비밀번호를 보낸 후의 터미널 출력은 다음과 같습니다.
[sudo] password for elade:
password
Sorry, try again.
저는 Arch Linux와 터미널 에뮬레이터 Konsole을 사용하고 있습니다.
답변1
위의 모든 의견에 감사드립니다. 모든 제안을 시도한 후 원래 스크립트가 갑자기 다시 작동하기 시작했습니다. 비밀번호를 묻는 메시지가 표시되고 비밀번호가 예상대로 전송되면 이전처럼 터미널에 나타나고 거부되는 대신 내가 직접 입력한 것처럼 보이지 않게 터미널에 전달되어 수락됩니다.
그래서 스크립트를 몇 번 실행했는데 1/10번도 같은 문제가 지속되었습니다. 세 가지 다른 비밀번호를 전송해야 하며 어떤 비밀번호가 "통과"되고 어떤 비밀번호가 터미널에 "반향"되어 거부되는지 무작위로 보입니다. 왜 이런 일이 발생하는지 모르겠지만 Expect 및 실제 스크립트와는 아무런 관련이 없는 것으로 생각됩니다.