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

Я пытаюсь автоматизировать мой VPN с помощью Scipt оболочки

Я хочу получить веб-страницу (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 Переменная правильно.

Есть идеи?

2 ответа

Решение

Вы можете использовать среду для хранения значения и использовать ожидаемую 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
'

Я пытался сделать то же самое для моего автоматического подключения vpn book. Я создал свою версию, используя другой ответ, плюс загрузив все необходимые файлы и обновляя их. Теперь это скрипт одной кнопки, который подключается к 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
'
Другие вопросы по тегам