Problema ao usar a variável expect!

2

Estou tentando automatizar minha VPN usando um shell scipt

O que eu quero é obter uma página da Web (curl) e analisá-la por senha. Se eu escrever um roteiro normal parece algo como:

var=$(curl -i http://www.vpnbook.com/freevpn | grep "Password: <strong>*")
echo ${var:26:8}

Isso gera uma senha.

Agora, quero analisar isso via expect , armazená-lo e, em seguida, executar o comando openvpn :

spawn sudo openvpn --config vpnbook-euro2-tcp443.ovpn
expect "Enter Auth Username:"
send "vpnbook"
expect "Enter Password: "
send $pass

Não consigo definir corretamente essa variável pass .

Alguma idéia?

    
por ps95 28.10.2013 / 17:30

2 respostas

2

Você pode usar o ambiente para armazenar o valor e usar a matriz env da expectativa para recuperá-lo:

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
'
    
por glenn jackman 28.10.2013 / 18:36
0

Eu estava tentando fazer a mesma coisa para a minha conexão automática vpnbook. Eu criei minha versão usando a outra resposta, além de baixar todos os arquivos necessários e mantê-los atualizados. Agora é um script de um botão que se conecta ao 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
'
    
por phacked 26.11.2013 / 16:17