Problem bei der Verwendung der Expect-Variable!

Problem bei der Verwendung der Expect-Variable!

Ich versuche, mein VPN mit einem Shell-Skript zu automatisieren

Ich möchte eine Webseite (curl) abrufen und sie nach Passwörtern durchsuchen. Wenn ich ein normales Skript schreibe, sieht es ungefähr so ​​aus:

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

Dadurch wird ein Passwort ausgegeben.

Jetzt möchte ich dies über analysieren expect, speichern und dann den openvpnBefehl ausführen:

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

Ich kann diese Variable nicht richtig einstellen pass.

Irgendwelche Ideen?

Antwort1

envSie können die Umgebung zum Speichern des Werts und das Array von expect zum Abrufen verwenden :

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
'

Antwort2

Ich habe versucht, dasselbe für meine automatische VPN-Buchverbindung zu tun. Ich habe meine Version mit der anderen Antwort erstellt und außerdem alle benötigten Dateien heruntergeladen und auf dem neuesten Stand gehalten. Es ist jetzt ein Ein-Knopf-Skript, das eine Verbindung zum VPN-Buch herstellt.

#!/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
'

verwandte Informationen