Last active
December 11, 2015 00:39
-
-
Save benoitjpnet/4518193 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#Script de connection automatique au réseau wifi et au portail captif de l'université | |
#de Nancy-Metz | |
#Start 28/09/10 | |
#Last edit : 5/10/10 | |
#Last Comment : Ajout de la libnotify pour envoyer de msg. | |
#Révision : stable | |
#Version : 1.2 | |
#Var | |
ifconfig=$(which ifconfig) | |
iwconfig=$(which iwconfig) | |
dhcp=$(which dhcpcd) | |
notifysend=$(which notify-send) | |
usens="y" #Utiliser notify-send pour envoyer des messages sur la gestion des notifications du système | |
carte="wlan0" #Nom de l'interface WiFi | |
ap="CrousNet" #Nom de l'ap | |
rate="36M" #Vitesse de négociation de la liaison WiFi | |
gateway="192.168.221.254" #Adresse IP de la passerelle | |
#Var urlencoded | |
url="aHR0cDovL3d3dy5nb29nbGUuZnIvaWc%3D" #Code base64 d'une URL à charger après auth. | |
authen="AA%3A%3AAuthen-LDAP-METZ%3A%3AAuthz-LDAP-METZ" #Auth sur univ metz | |
#Var normal | |
user="" #Nom d'user | |
passwd="" # Mot de passe | |
useragent="Firefox/3.6.10" | |
cookies="auth.cookies" | |
sendmessage() | |
{ | |
if [ $usens = 'y' ] | |
then | |
$notifysend "Connexion au WiFi Univ. Nancy-Metz : | |
$1 | |
" | |
fi | |
} | |
#Configuration de la carte WiFi et connection au WLAN. | |
cowifi() | |
{ | |
sudo $ifconfig $carte up | |
sudo $iwconfig $carte essid $ap | |
sudo $iwconfig $carte rate $rate auto | |
sudo $dhcp $carte &>/dev/null | |
} | |
#Vérification de la connectivité WLAN. | |
testcowlan() | |
{ | |
ping -c 1 $gateway &>/dev/null #On ping la passerelle et si elle répond on est connecté au WLAN | |
if [ $? != 0 ] | |
then | |
echo "Erreur, impossible de contacter la passerelle ! Re-test dans 5s" | |
sendmessage "Erreur, impossible de contacter la passerelle ! Re-test dans 5s" | |
sleep 5s | |
return 1 | |
else | |
echo "Authentification en cours..." | |
sendmessage "Authentification en cours..." | |
return 0 | |
fi | |
} | |
#Authentification sur le portail captif. | |
authcaptiveportal() | |
{ | |
curl -m 10 --connect-timeout 10 -# -L --referer "https://portail-crous.crous-nancy-metz.fr/?url="$url"" --user-agent "Firefox/3.6.10" https://portail-crous.crous-nancy-metz.fr/gotoauthen --data-urlencode url="$url" --data-urlencode accept="1" --data-urlencode authen="$authen" -o /dev/null | |
#Renvoie vers URL=https://portail-crous.crous-nancy-metz.fr/login?url=aHR0cDovL3d3dy5nb29nbGUuZnIvaWc=&authen=AA::Authen-LDAP-METZ::Authz-LDAP-METZ | |
curl -m 10 --connect-timeout 10 -# --referer "https://portail-crous.crous-nancy-metz.fr/login?url="$url"&authen="$authen"" --user-agent "$useragent" https://portail-crous.crous-nancy-metz.fr/authen-ldap -d url="$url" -d authen="$authen" -d user="$user" -d pwd="$passwd" -d accept="on" -d Submit="Valider" -c $cookies -o /dev/null | |
if [ $? != 0 ] #Si curl retourne un code d'erreur, on repasse au test de la conenctivité WLAN. | |
then | |
echo "Impossible de s'authentifier... On se reconnecte au réseau WLAN." | |
sendmessage "Impossible de s'authentifier... On se reconnecte au réseau WLAN." | |
testcowlan | |
if [ $? != 0 ] #Si on est pas connecté au WLAN, on reprend du début, sinon on relance l'auth. | |
then | |
start | |
else | |
authcaptiveportal | |
fi | |
fi | |
echo "Connexion ok ;)" | |
sendmessage "Connexion ok ;)" | |
while sleep 30s # Toute les 30s on met à jour le cookie, pour rester connecter, timeout sur 2min. | |
do | |
echo "Mise à jour du cookie" | |
keepconnected=$(curl -m 10 --connect-timeout 10 -# https://portail-crous.crous-nancy-metz.fr/popup -b $cookies | grep "Connecté") | |
if [ $? != 0 ] #Si on peut pas mettre à jour, on se ré-auth. | |
then | |
echo "Oups, il semblerait que l'on ait été deconnecté, on se re-authentifie." | |
sendmessage "Oups, il semblerait que l'on ait été deconnecté, on se re-authentifie." | |
authcaptiveportal | |
fi | |
done | |
} | |
start() | |
{ | |
cowifi | |
testcowlan | |
if [ $? != 0 ] | |
then | |
echo "Retentative de connection au WLAN..." | |
sendmessage "Retentative de connection au WLAN..." | |
sleep 5s | |
start | |
else | |
authcaptiveportal | |
fi | |
} | |
#On lance le script :D | |
start |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment