怠惰なので、openvpnを自動的に起動する一連の非常に「汚れた」スクリプトを書いています。私が使用している設定ファイルはvpnbook.com/freevpnから入手したものです。
私が使用するパスワードを取得するには:
lynx --dump --nolist vpnbook.com/freevpn | grep -i password | sort -u | cut -b 18,19,20,21,22,23,24
パスワードはウェブサイトから返されます。
次に、Expectスクリプトを使用して自動的にログインします(ユーザー名は常にvpnbookですが、パスワードは曜日によって変わります)。
#!/usr/bin/expect -f
spawn openvpn /vpn/vpnbook-ca1-tcp80.ovpn ### my vpn configuration file ###
expect "*?sername:*"
send -- "vpnbook\r"
expect "*?assword:*"
### This next line sends the password that changes by the week, which I...
###...unfortunately need to update manually (for lack of a better method):
send -- "weekly-password\r"
パスワードを自動的に更新しようとしたときに発生する問題:
1)予想される環境では、lynxを直接呼び出すことはできません。
2)パスワードの変更により、先週の固有のパスワードフレーズを更新されたバージョンに変更する方法がわかりません。
send -- "unique-previous-password\r"
3)lynx関数によって出力された文字列を入力変数として使用して、先週のパスワード(私の予想スクリプトで)を編集する方法がわかりません。
私が「最もスマートな」プログラマーでもなく、最も効率的なプログラマーでもないことは明らかです。しかし、最終的に私の唯一の目標は、単一のコマンドを入力してVPNを完全に初期化することです(前述のように私は怠惰です)。
どんな助けでも大変感謝します。ありがとうございます!
ベストアンサー1
expect
/スクリプトでは、次のものをtcl
使用できます。
send "$env(PASSWORD)\r"
expect
以下を使用してスクリプトを呼び出します。
PASSWORD=$(elinks -dump...) /path/to/your/expect/script
短い名前を使用できますcut -b18-24
。