
Estoy intentando automatizar mi VPN usando un script de shell
Lo que quiero es obtener una página web (curl) y analizarla para obtener una contraseña. Si escribo un script normal se ve así:
var=$(curl -i http://www.vpnbook.com/freevpn | grep "Password: <strong>*")
echo ${var:26:8}
Esto genera una contraseña.
Ahora quiero analizar esto a través de expect
, almacenarlo y luego ejecutar el openvpn
comando:
spawn sudo openvpn --config vpnbook-euro2-tcp443.ovpn
expect "Enter Auth Username:"
send "vpnbook"
expect "Enter Password: "
send $pass
No puedo configurar esta pass
variable correctamente.
¿Algunas ideas?
Respuesta1
Puede usar el entorno para almacenar el valor y usar la env
matriz de expect para recuperarlo:
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
'
Respuesta2
Estaba intentando hacer lo mismo con la conexión automática de mi VPN. Creé mi versión usando la otra respuesta, además de descargar todos los archivos necesarios y mantenerlos actualizados. Ahora es un script de un solo botón que se conecta al libro 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
'