Проблема с использованием ожидаемой переменной!

Проблема с использованием ожидаемой переменной!

Я пытаюсь автоматизировать свой 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массив expect для его извлечения:

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
'

Связанный контент