
Estou tentando automatizar minha VPN usando um shell scipt
O que eu quero é obter uma página da web (curl) e analisá-la em busca de senha. Se eu escrever um script normal será 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 executar o openvpn
comando:
spawn sudo openvpn --config vpnbook-euro2-tcp443.ovpn
expect "Enter Auth Username:"
send "vpnbook"
expect "Enter Password: "
send $pass
Não consigo definir essa pass
variável corretamente.
Alguma ideia?
Responder1
Você pode usar o ambiente para armazenar o valor e usar o array expect env
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
'
Responder2
Eu estava tentando fazer a mesma coisa para minha conexão automática do VPNbook. 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 livro VPN.
#!/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
'