Skip to content

Instantly share code, notes, and snippets.

@maelvls
Last active April 13, 2018 17:17
Show Gist options
  • Save maelvls/5021908 to your computer and use it in GitHub Desktop.
Save maelvls/5021908 to your computer and use it in GitHub Desktop.
Petit script pour tous les gens se connectant en filaire (et même en wifi) aux réseaux du CROUS à Toulouse. Gaffe à votre mot de passe, car là il est en clair !
#!/bin/sh
# connect.sh
#
# Petit script pour se connecter aux servs du CROUS à la cité U Rangueil
# Auteur: mael.valais@univ-tlse3.fr
# Mis à jour le 9.2.2013
# Version 0.2
# Attention :
# - connection CURL non SSL à cause du certificat foireux
# - mot de passe en clair
#
# Amélioration possible : ajouter l'option -d qui déconnecterait
# Comment ca marche :
# Mettez après user= votre identifiant CROUS (aaa1337a@univ-tlse3.fr par exemple)
user=""
# Ensuite votre mot de passe CROUS
passwd=""
# Analyse des parametres
v=0
while [ "x$1" != "x" ]; do
case "$1" in
-v | --verbose) # Mode verbose
v=1; shift
;;
-va | --verboseall) # afficher le retour du curl
v=2; shift
;;
-h | --help) # de l'aide
echo "Aide: regardez a l'interieur du script, c'est ecrit"
exit 0
;;
esac
done
# Options avancees
useragent="Firefox/1.6.10"
tempsLong=300 # Rafraichissement en seconde en cas de réussite
# Sur cette version on quitte au lieu de rafraichir
tempsCourt=5 # Rafraichissement en cas d'echec
logIntoCaptivePort() {
# On envoi le formulaire POST en --insecure car le certificat est mauvais sur les serveurs du CROUS
# Ensuite on vérifie que ce qui est renvoyé contienne un morceau du script de déconnexion
result=$(
curl -m 10 --connect-timeout 5 --user-agent "$useragent" --insecure $1 -d auth_user="$user" -d auth_pass="$passwd" -d accept="Continue" -v 2> /dev/null
)
if [ $? -ne 0 ]; then
if [ "$v" -ge 1 ]; then echo "Impossible de se connecter à $1 (unreachable)" >&2; fi
return 1
fi
if [ $v -ge 2 ]; then echo $result; fi # Le mode ultra-verbose
echo $result | grep 'INPUT NAME="logout_id"'>/dev/null 2>&1
if [ $? -eq 0 ]; then # Si ca marche
if [ $v -ge 1 ]; then echo "Connecté sur $1. Rafraichissement dans $tempsLong s"; fi
return 0
else # Si ca ne retourne pas le bon
if [ $v -ge 1 ]; then echo "Erreur: Impossible de s'identifier sur $1" >&2; fi
return 1
fi
}
#Authentification sur le portail captif
multipleConnect()
{
if logIntoCaptivePort https://portailpf8.crous.lan:8001; then return 0; fi
if logIntoCaptivePort 172.17.144.2:8000; then return 0; fi
if logIntoCaptivePort 172.17.160.2:8000; then return 0; fi
echo "Impossible de se connecter. Nouvel essai dans $tempsCourt s" >&2
return 1
}
reloadIn=0
while sleep $reloadIn
do
if ! multipleConnect; then reloadIn=$tempsCourt;
else necho "Connecté au CROUS"; exit 0; fi
done
exit 0
@Erim32
Copy link

Erim32 commented Apr 13, 2018

Bonjour,
je me suis permis de reprendre votre script pour le réactualiser avec les nouvelles adresses IP ainsi que d'ajouter une intégration de retour graphique:
Lien: ( https://gist.github.com/Erim32/d67fb756e21630f7e33ffdffbb1c40d3 )
En espérant que cela pourra être utile à quelqu'un.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment