Проблема с использованием ожидаемой переменной!
Я пытаюсь автоматизировать мой 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
'