
쉘 스크립트를 사용하여 VPN을 자동화하려고 합니다.
내가 원하는 것은 웹페이지(컬)을 가져와서 암호를 구문 분석하는 것입니다. 일반 스크립트를 작성하면 다음과 같습니다.
var=$(curl -i http://www.vpnbook.com/freevpn | grep "Password: <strong>*")
echo ${var:26:8}
비밀번호가 출력됩니다.
expect
이제 를 통해 이를 구문 분석하고 저장한 후 다음 명령을 실행하고 싶습니다 openvpn
.
spawn sudo openvpn --config vpnbook-euro2-tcp443.ovpn
expect "Enter Auth Username:"
send "vpnbook"
expect "Enter Password: "
send $pass
이 변수를 제대로 설정할 수 없습니다 pass
.
어떤 아이디어가 있나요?
답변1
환경을 사용하여 값을 저장하고, 예상 env
배열을 사용하여 값을 검색할 수 있습니다.
var=$(curl -i http://www.vpnbook.com/freevpn | grep "Password: <strong>*")
export passwd=${var:26:8}
expect -c '
spawn sudo openvpn --config vpnbook-euro2-tcp443.ovpn
expect "Enter Auth Username:"
send "vpnbook"
expect "Enter Password: "
send $env(passwd)
interact
'
답변2
나는 VPNbook 자동 연결에 대해 이와 동일한 작업을 수행하려고 했습니다. 나는 다른 답변과 필요한 모든 파일을 다운로드하고 최신 상태로 유지하여 내 버전을 만들었습니다. 이제 VPN 책에 연결하는 원버튼 스크립트입니다.
#!/bin/bash
rm vpnbook*
rm VPNBook*
curl -O http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-US1.zip
unzip VPNBook.com-OpenVPN-US1.zip
var=$(curl -i http://www.vpnbook.com/freevpn | grep "Password: <strong>*")
export passwd=${var:26:8}
expect -c '
spawn sudo openvpn --config vpnbook-us1-tcp80.ovpn
expect "Enter Auth Username:"
send "vpnbook\r"
expect "Enter Password: "
send "$env(passwd)\r"
interact
'