Skip to content

Instantly share code, notes, and snippets.

@benoitjpnet
Last active December 11, 2015 00:39
Show Gist options
  • Save benoitjpnet/4518193 to your computer and use it in GitHub Desktop.
Save benoitjpnet/4518193 to your computer and use it in GitHub Desktop.
#!/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