使用预期变量时出现问题!

使用预期变量时出现问题!

我正在尝试使用 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
'

相关内容