스크립트가 예정대로 비밀번호를 보낼 것으로 예상되지 않습니다.

스크립트가 예정대로 비밀번호를 보낼 것으로 예상되지 않습니다.

이 내용을 읽으려고 했지만 왜 이런 일이 발생하는지 이해가 되지 않습니다.

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 및 실제 스크립트와는 아무런 관련이 없는 것으로 생각됩니다.

관련 정보