¡Problema al usar la variable expectativa!

¡Problema al usar la variable expectativa!

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 openvpncomando:

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

No puedo configurar esta passvariable correctamente.

¿Algunas ideas?

Respuesta1

Puede usar el entorno para almacenar el valor y usar la envmatriz 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
'

información relacionada