"read -s"를 사용하여 암호를 묻는 bash 스크립트가 있습니다. expect을 통해 스크립트를 실행하면 암호가 터미널에 표시됩니다. 이상한 점은 원하는대로 5 번 중 1 번 정도 작동하지만 대부분 그렇지 않다는 것입니다. 이것을 비활성화하는 신뢰할 수있는 방법이 있습니까?
#!/bin/bash
read -p 'login name? ' name
read -s -p 'password? ' pass
read -p $'\nfavorite color? ' color
echo -e "$name\n$pass\n$color"
#!/usr/bin/expect -f
spawn -noecho ~/tmp/login_test
expect "login name? " {send "gordon\r"}
expect "password? " {
#stty -echo -- This doesn't work
#log_user 0 -- This doesn't work either
send "gr33d\r"
#log_user 1
#stty echo
}
expect "favorite color? " {send "green\r"}
expect eof {exit}
> ~/tmp/login_test
login name? gordon
password?
favorite color? green
gordon
gr33d
green
> ~/tmp/expect_test
login name? gordon
password? gr33d
favorite color? green
gordon
gr33d
green
알아 냈어! 해결책은 1ms 동안 잠자는 것입니다 ...
#!/usr/bin/expect -f
spawn -noecho ~/tmp/login_test
expect "login name? " {send "gordon\r"}
expect "password? " {sleep .001; send "gr33d\r"}
expect "favorite color? " {send "green\r"}
expect eof {exit}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다