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?
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
'
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
'