使用期望變數時出現問題!

使用期望變數時出現問題!

我正在嘗試使用 shell scipt 自動化我的 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

您可以使用環境來儲存值,並使用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 書的一鍵腳本。

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

相關內容