我正在尝试使用 shell 脚本来自动化我的 vpn
我想要的是获取一个网页(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
您可以使用环境来存储值,并使用期望的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
'