예상 변수를 사용하는 중에 문제가 발생했습니다!

예상 변수를 사용하는 중에 문제가 발생했습니다!

쉘 스크립트를 사용하여 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
'

관련 정보