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

Я пытаюсь автоматизировать свой vpn с помощью shell 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
задан 28 October 2013 в 21:11

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
'
0
ответ дан 28 October 2013 в 21:11

Я пытался сделать то же самое для моего автоматического подключения 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
'
0
ответ дан 28 October 2013 в 21:11

Другие вопросы по тегам:

Похожие вопросы: