web-dev-qa-db-ja.com

expect変数の使用で問題が発生しました!

Shell sciptを使用してvpnを自動化しようとしています

私が欲しいのは、Webページ(カール)を取得し、パスワードのためにそれを解析することです。通常のスクリプトを記述する場合、次のようになります。

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変数を適切に設定できません。

何か案は?

2
ps95

環境を使用して値を格納し、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
glenn jackman

私はvpnbookの自動接続に対してこれと同じことをしようとしていました。他の回答に加えて、必要なすべてのファイルをダウンロードして最新の状態に保ちながら、バージョンを作成しました。 vpnブックに接続する1つのボタンスクリプトです。

#!/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
'
0
phacked