스크립트가 계획대로 비밀번호를 보내지 않을 것으로 예상됩니다.

스크립트가 계획대로 비밀번호를 보내지 않을 것으로 예상됩니다.

나는 이것에 대해 읽으려고 노력했지만 왜 그런 일이 일어나는지 알 수 없습니다.

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 및 실제 스크립트와는 거의 관련이 없다고 생각됩니다.

관련 정보