
シェルスクリプトを使用してVPNを自動化しようとしています
私がやりたいのは、Web ページ (curl) を取得して、それを解析してパスワードを取得することです。通常のスクリプトを書くと、次のようになります。
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
環境を使用して値を保存し、expect の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 book に接続するワンボタン スクリプトになりました。
#!/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
'