Created
April 13, 2018 17:08
-
-
Save Erim32/d67fb756e21630f7e33ffdffbb1c40d3 to your computer and use it in GitHub Desktop.
Script de connexion automatique aux différents portails web du CROUS.
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/sh | |
# crous_connect | |
# | |
# Petit script pour se connecter aux services du CROUS | |
# Auteur d'orgine: [email protected] | |
# 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 ([email protected] 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 |
Yop, j'ai fait un peu là même si mon implémentation vous intéresse https://github.com/4skl/CROUS-autoconnect
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
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