암호가 여러 번 필요한 곳에 설치 및 설정을 자동화하기 위해 bash 스크립트에서 here-documents를 사용하고 있습니다. 암호를 한 번 입력하면 스크립트가이를 다양한 명령에 전달합니다. 대부분의 경우 here-document 접근 방식이이 문제를 처리합니다. 그러나 어떤 경우에는 다음 오류가 발생합니다.
Enter VNC password: stty: standard input: Inappropriate ioctl for device
Verify password:
stty: standard input: Inappropriate ioctl for device
이 오류 메시지는에서 보낸 것이 x11vnc -storepassword
아닙니다 sudo
.
내 문제는 관련이 x11vnc -storepasswd
있으며 여기에 내 코드가 있습니다.
sudo x11vnc -storepasswd ~/.vnc/passwd << ENDDOC
password
password
y
ENDDOC
분명히 (오류에서) 작동하지 않습니다. sudo x11vnc -storepasswd ~/.vnc/passwd
스크립트에서 구현하는 방법에 대한 작업 예제를 감사하겠습니다 .
도움이되는 경우 프롬프트는 다음과 같습니다.
VNC 비밀번호 입력 : 비밀번호
확인 :
/home/user/.vnc/passwd에 비밀번호를 쓰시겠습니까? [y] / nn
사용 expect
하는 것이 더 나은 솔루션입니까? 그렇다면이 경우 어떻게 사용합니까? ( expect
전에 사용한 적이 없지만이 질문을 게시 한 이후로 많은 예제를 살펴 보았고 expect
혼자 작업 할 수 없습니다 .)
x11vnc
표준 입력이 터미널 일 것으로 예상하고 입력 할 때 암호가 에코되지 않도록 터미널 모드를 변경합니다. 표준 입력이 터미널이 아닌 경우 stty
에코를 껐다가 다시 켜는 호출이 실패하므로 경고가 표시됩니다.
기대는 실제로 해결책입니다. 다음 스크립트를 시도해보십시오 (예상되지 않음).
#!/usr/bin/expect -f
spawn x11vnc -storepasswd ~/.vnc/passwd
expect "password:" {send "swordfish" "\r"}
expect "password:" {send "swordfish" "\r"}
expect "Write*\?" {send "y\r"}
또는 가능하면 RFB ( -passwdfile
또는 SSL 클라이언트 인증서) 이외의 인증 방법을 사용하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다