Skip to content

Instantly share code, notes, and snippets.

@Erim32
Created April 13, 2018 17:08
Show Gist options
  • Select an option

  • Save Erim32/d67fb756e21630f7e33ffdffbb1c40d3 to your computer and use it in GitHub Desktop.

Select an option

Save Erim32/d67fb756e21630f7e33ffdffbb1c40d3 to your computer and use it in GitHub Desktop.
Script de connexion automatique aux différents portails web du CROUS.
#!/bin/sh
# crous_connect
#
# Petit script pour se connecter aux services du CROUS
# Auteur d'orgine: mael.valais@univ-tlse3.fr
# Script d'origine: https://gist.github.com/maelvalais/5021908
# Contributeur dernière mise a jour: Rémi M (github.com/Erim32)
# Mis à jour le 13.04.2018
# Version 0.3
# Exemples de taches cron:
# Connexion crous
# @reboot DISPLAY=:0 sh ~/crous_connect.sh
# */10 * * * * DISPLAY=:0 sh ~/crous_connect.sh
# Remarque:
# "DISPLAY=:0 sh" permet de spécifier la sortie graphique des notifications.
# 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/58.0.0"
tempsLong=1200 # Rafraichissement en seconde en cas de réussite
tempsCourt=5 # Rafraichissement en cas d'echec
loginCROUS() {
# 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 résultat
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 loginCROUS "https://portailpf8.crous.lan:8001/?zone=lan"; then return 0; fi
if loginCROUS "http://172.17.144.2:8002/?zone=lan"; then return 0; fi
if loginCROUS "http://172.17.160.2:8002?zone=lan"; then return 0; fi
if loginCROUS "http://172.17.176.2:8002?zone=lan"; then return 0; fi
if loginCROUS "http://172.17.208.10:8002?zone=lan"; then return 0; fi
if loginCROUS "http://192.168.1.9:8004?zone=lan"; then return 0; fi
if loginCROUS "http://172.17.208.10:8002?zone=lan"; then return 0; fi
# Mode graphique
# notify-send "$0" "/!\\ Impossible de se connecter. Nouvel essai dans $tempsCourt s" >&2
echo "Impossible de se connecter, nouvel essai dans $tempsCourt s"
return 1
}
reloadIn=0
while sleep $reloadIn
do
if ! multipleConnect; then
reloadIn=$tempsCourt;
else
echo "Connection au CROUS, Status: OK"; exit 0; fi
done
exit 0
@aerodomigue

Copy link
Copy Markdown

Merci de ton travail, suis moi même au crous de toulouse et je l'utilise sur un rpi qui me crée un point d'accé wifi via rasp ap

@4skl

4skl commented Dec 31, 2019

Copy link
Copy Markdown

Yop, j'ai fait un peu là même si mon implémentation vous intéresse https://github.com/4skl/CROUS-autoconnect

@louisroyer

Copy link
Copy Markdown

Je me suis basé sur l’implémentation de @4skl pour automatiser l’authentification auprès du portail captif dès que la connexion est faite via Network Manager. Si jamais ça intéresse quelqu’un, c’est par ici: https://github.com/louisroyer/CROUS-autoconnect.

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