web-dev-qa-db-fra.com

Problème d'utilisation de la variable attendue!

J'essaie d'automatiser mon vpn à l'aide d'un scipt de Shell

Ce que je veux, c'est obtenir une page Web (curl) et l'analyser pour le mot de passe. Si j'écris un script normal ressemble à quelque chose comme:

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

Cela génère un mot de passe.

Maintenant, je veux analyser ceci via expect, le stocker, puis exécuter la commande openvpn:

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

Je ne parviens pas à définir correctement cette variable pass.

Des idées?

2
ps95

Vous pouvez utiliser l'environnement pour stocker la valeur et utiliser le tableau env de expect pour la récupérer:

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
'
2
glenn jackman

J'essayais de faire la même chose pour ma connexion automatique vpnbook. J'ai créé ma version en utilisant l'autre réponse, en téléchargeant tous les fichiers nécessaires et en les maintenant à jour. C'est maintenant un script à un bouton qui se connecte à 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
'
0
phacked