Générer ses comptes kwartz depuis SIECLE et Pronote

Plusieurs fois par an, il faut générer les fichiers d’importation pour kwartz. Sconet/kwartz permet déjà cela, mais il ne n’associe pas automatiquement les profs à leurs classes. J’ai donc développé un petit outil en python qui utilise les données de Pronote pour créer ces affectations (de manière optionnelle).

Récupération des données

Exportation de SIECLE

(Pour obtenir la liste des élèves et leurs affectations.)

Avec le compte d’un personnel administratif, se connecter sur SIECLE puis faire une exportation xml de la Base Élève Établissement (BEE). Le fichier obtenu étant zippé, il faut de décompresser avant utilisation.

Exportation Kwartz

(Pour obtenir l’état actuel des comptes.)

À partir de la version 5, dans l’onglet Utilisateurs > Gestion des comptes > Exporter > Exporter le fichier
Le fichier arrive sur le compte winadmin de kwartz (\\kwartz\winadmin\Listes utilisateurs).

Exportation Pronote

(Facultatif – Pour obtenir la liste des profs et leurs affectations.)

Se connecter en administrateur à Pronote puis :
Fichier > Autres imports/exports > Exporter un fichier texte
Dans la liste déroulante « Type de données à exporter », choisir Services, puis cliquer sur Exporter.

La moulinette

Avec nos fichiers, il ne reste plus qu’à lancer le script en précisant le nom du groupe dans lequel se trouve les profs sur kwartz :

python3 crea_kwartz.py profs ElevesSansAdresses.xml Exportation_kwartz.txt [EXP_SERVICES_pronote.txt]

Quatre fichiers sont générés :
* Aajouter.txt pour les comptes à ajouter ;
* Amodifier.txt pour les comptes à modifier ;
* Asupprimer.txt pour les comptes à désactiver (à affecter au groupe « anciens »), ou à supprimer ;
* Messages.txt contenant tous les messages d’avertissement provoqués par la génération des trois fichiers précédant.

Reste plus qu’à retourner sur kwartz ( Utilisateurs > Importer ) pour mettre à jour les comptes.

J’essaierais d’ajouter une interface web à l’occasion pour rendre plus pratique l’exécution du script :)

Publicités

Kwartz et OwnCloud

Depuis la version 5, kwartz intègre une solution ownCloud (toujours en version 4.0.7 jusque aujourd’hui, c’est-à-dire la 6.0r1). Un des cotés pratique de ownCloud est le client de synchronisation ; voici comment le paramétrer.

Il faut d’abord récupérer une version du owncloud-client compatible ; en l’occurrence il s’agit de la 1.0.5. Comme cette version n’est plus distribuée depuis Mathusalem, je l’ai mis à disposition sur un de mes serveurs.

Pendant l’installation, il faut préciser l’adresse de son serveur (« http://IP_DU_SERVEUR_KWARTZ/owncloud »), ainsi que ses identifiants de connexion :
owncloud_serveur

Puis il faut valider le certificat de sécurité ssl du serveur :
owncloud_ssl

Après l’installation, il faut encore supprimer le profil créé par défaut, ajouter une nouvelle synchronisation en sélectionnant un dossier local, puis en choisissant le dossier à synchroniser (par exemple « Home/Travail/synchro » pour synchroniser le dossier « synchro » du répertoire de travail) :
owncloud_synchro

En précisant uniquement « Home/Travail », cela synchronise tout le répertoire de travail :)

Personnaliser le portail captif de Kwartz

Kwartz 5 et supérieur permet d’utiliser un portail captif pour les connexions wifi. Celui-ci est personnalisable ; ce qui pratique si on veut en faire une version qui est adaptée aux périphériques mobiles (ce qui n’est pas le cas de la version originale).

Il faut d’abord récupérer l’archive contenant les sources html/css du portail : dans Réseau > Portail captif > Personnalisation > Obtenir l’interface par défaut

En décompressant l’archive, il faut maintenant modifier les fichiers login.html et kwartz.css. En suite, il ne reste plus qu’à recompresser le tout dans un zip, et à l’envoyer sur le serveur : dans Réseau > Portail captif > Personnalisation > Parcourir, puis « Transférer le fichier … ».

Je mets en téléchargement ma version modifiée ^^ (En gros j’ai ajouté un tag meta viewport et un clospan oublié, retiré le margin du body, et ajouté un dégradé css en background).

Client linux (xubuntu 14) et réseau kwartz

Cet article fait suite à un article précédent concernant ubuntu 13. Entre temps, je suis passé sur xubuntu 14 qui est pour moi plus léger et plus adaptable à mes besoins ^^

Récupération du nom de l’ordinateur par dhcp

Lors de la création d’une image linux, le fichier /etc/hostname (qui indique l’identité de l’ordinateur) est enregistré lui aussi. Ainsi, chaque image déployée aura le même nom inscrit… pas cool. L’idée ici est de récupérer de manière dynamique le nom de l’ordinateur sur le kwartz et de mettre à jour le fichier hostname.

Le script fournit par Iris (un hook à ajouter au démon dhcp) ne fonctionnait pas chez moi. Je l’ai simplement remplacé par un petit changement de paramètre au niveau du démon, dans /etc/dhcp/dhclient.conf : en désactivant le « send host-name », cela force d’une certaine manière le dhcp à mettre à jour /etc/hostname avec la bonne valeur.

Personnalisation des sessions

Pour créer des raccourcis pour chaque nouvel utilisateur, il suffit de copier le fichier .desktop correspondant dans le dossier /etc/skel/Bureau/
Ne pas oublier d’ajouter le droit d’exécution sur les fichiers :
chmod +x /etc/skel/Bureau/*.desktop

Pour le paramétrage de Firefox, il faut modifier le fichier /etc/firefox/syspref.js (pour la syntaxe, voir cette article sur mozillazine).

Modification de l’écran de connexion lightdm

On va modifier /etc/lightdm/lightdm.conf pour que lightdm offre/masque quelques fonctionnalités :
[SeatDefaults]
greeter-show-manual-login=true
# Pour pouvoir se connecter avec un nouveau nom sur l'ordinateur
allow-guest=false
# Désactive le compte invité
greeter-show-remote-login=false
# Désactive la connexion à distance (en utilisant un autre serveur pour s'authentifier)
greeter-hide-users=true
# Cache les utilisateurs précédents (et les comptes locaux)

Ajout automatique des imprimantes

Cups est trop efficace sur ce point : dès qu’on l’installe, il trouve toutes les imprimantes du réseau. Impossible de mettre ça dans les mains des élèves :)
D’abord, il faut désactiver la découverte automatique en remplaçant « Browsing On » par Browsing Off » dans /etc/cups/cupsd.conf .

Ensuite, j’ai créé un script d’installation qui se lance au démarrage de l’ordinateur et qui va lire un fichier ini présent sur le réseau et installer les bonnes imprimantes. La méthode d’installation et le format du fichier ini sont décrites dans l’entête du script : ptr.sh.

Conclusion

Tout ces choses sont repris dans le fichier integration_xubuntu_1404.sh

J’ai aussi séparé dans un script spécifique un ensemble d’installations/configurations pas indispensables mais toujours pratique à avoir et à adapter à son environnement : configurations_supplementaires.sh. On y trouve l’installation de paquets pédagogiques courants (java, geogebra, freeplane, etc.), et de quoi utiliser Micro$oft Office 2010 par wine/PlayOnLinux.

Client linux (ubuntu 13) et réseau kwartz

Cet article décrit comment intégrer un ubuntu 13.04 à kwartz et en faire une image avec tivoli.

Partitionnement du disque et installation d’Ubuntu

Il faut d’abord connaître la version de rembo/tivoli présente sur le kwartz (Kwartz~Control > Maintenance > Rembo) :

  • Avec Rembo 2, la partition doit être en ext2 (mais cela pose d’autres problèmes par la suite, je le déconseille) ;
  • Avec Rembo 5/Tivoli, la partition doit être au mieux en ext3 avec une taille d’inode de 128 bits.

Après avoir démarré sur le cd d’ubuntu, mais avant de commencer l’installation, il faut partitionner manuellement le disque dur. Pour cela,
Ctrl + Alt + F1
$ sudo su
$ loadkeys fr

(attention, jusque ici le clavier en anglais). On obtient ainsi un terminal root.

On lance l’outil de partitionnement et créer deux partitions :
$ cfdisk /dev/sda
NB: On peut créer une partition de swap, mais les partitions ext3 suivantes seront ignorées par tivoli. Donc pas de /home ou de /usr séparé.

Il faut ensuite formatter la partition :
$ mkfs.ext3 -I 128 /dev/sda1
Si un message d’erreur indique que la partition n’existe pas, il faut forcer le kernel a redétecter les partitions (partprobe), voir simplement redémarrer.
On revient à l’interface d’installation (Ctrl + Alt + F7) et au moment de choisir les partitions d’installation, prendre « Autre chose » et ne pas reformater les partitions (ce serait dommage ^^).

Comme Rembo/Tivoli n’est pas compatible avec grub, il faut encore installer lilo pour qu’il puisse extraire le kernel :
$ apt-get -y install lilo
$ liloconfig -f
$ lilo

Une autre surprise de Tivoli : il repartitionne le disque comme il l’entend. Par exemple en installant ubuntu sur une partition système de 20 Go avec un swap de 1Go ; à la première restauration complète, tivoli va étendre au maximum la partition système, mettre un swap de 2 Go et garder environ 9 Go de libre pour son image locale. C’est pas vraiment ce qu’on peut appeler une restauration surtout que cela modifier les UUID des partitions. Pas de problème pour le fstab car tivoli le réécrit pendant la restauration, mais cela peu impacter d’autres outils comme le gestionnaire de démarrage.

Déclaration du proxy

Il y a au moins trois endroits où déclarer le proxy :

  • pour le shell, modifier ~/.bashrc et /etc/profile.d/proxy.sh :
    export http_proxy=http://IP_DU_KWARTZ:3128
    export ftp_proxy=ftp://IP_DU_KWARTZ:3128
  • pour apt, modifier le fichier /etc/apt/apt.conf.d/proxy :
    Acquire::http::Proxy "http://IP_DU_KWARTZ:3128";
    Acquire::ftp::Proxy "ftp://IP_DU_KWARTZ:3128";
  • pour l’interface graphique, modifier  /etc/profile.d/gnome.sh :
    $ gsettings set org.gnome.system.proxy mode 'manual'
    $ gsettings set org.gnome.system.proxy.http host "IP_DU_KWARTZ"
    $ gsettings set org.gnome.system.proxy.http port 3128

Authentification réseau : LDAP et PAM

Pour pouvoir se connecter avec un compte du kwartz, il faut mettre en place l’authentification par LDAP :
$ apt-get -y install openbsd-inetd pidentd libpam-ldap
Les réponses à donner dans l’ordre : ldap://IP_DU_KWARTZ > dc=MON_LYCEE,dc=FR > 3 > non > non

Dans /etc/ldap.conf, désactiver « pam_password md5 » et activer « pam_password crypt », puis :
$ auth-client-config -t nss -p lac_ldap

Lecteurs réseau

$ apt-get -y install libpam-mount smbfs
Puis déclarer les montages réseau dans /etc/security/pam_mount.conf.xml en suivant la syntaxe :
<volume uid="1000-65532" fstype="cifs" server="IP_DU_KWARTZ" path="NOM_DU_PARTAGE" mountpoint="~/POINT_DE_MONTAGE" options="iocharset=utf8" />

Autres modifications

  • Couper les mises-à-jour automatiques ; dans /etc/apt/apt.conf.d/10periodic, modifier la ligne suivante :
    APT::Periodic::Update-Package-Lists "0"
  • Désactiver le rapport de bugs ; dans /etc/default/apport, désactiver apport : enabled=0
  • Utiliser le kwartz comme serveur de temps ; modifier /etc/default/ntpdate comme suit :
    NTPDATE_USE_NTP_CONF=no
    NTPSERVERS="IP_DU_KWARTZ"
  • Tivoli ne renomme pas l’ordinateur restauré. En supprimant le fichier /etc/hostname, cela force ubuntu à utiliser le nom donné par le dhcp. À noter que si l’ordi fait sa demande de bail dhcp sur la seconde interface réseau déclarée (par exemple avec un portable), le kwartz répond en ajoutant un « _2 » au nom déclaré, ce qui met en échec la plupart des commandes réseau car le nom de l’ordi n’est plus résolvable.

Création de l’image

La création d’image suit la procédure classique ; il va uniquement demander de :

  • choisir le mode du disque dur : EIDE / SCSI ; pour les disques SATA (le cas le plus courant aujourd’hui), mettre SCSI. En cas d’erreur ici, le système restauré ne démarrera pas.
  • choisir le kernel sur lequel on veux démarrer (« Linux »).

À la restauration de l’image, tivoli va réécrire le fichier fstab en supprimant les UUID et en utilisant l’option de montage « defaults » sur  / ce qui empêche le système de redémarrer. Il faut créer un script qui va modifier le fstab après la restauration de l’image, remplaçant « defaults » (alias de « rw, suid, dev, exec, auto, nouser, async ») par la valeur par défaut de Ubuntu : « errors=remount-ro ». Le mieux que j’ai trouvé est d’ajouter au /etc/rc.local la commande : sed -i -e 's/ext2\tdefaults/ext3\terrors=remount-ro/' /etc/fstab

Script automatisé

Heureusement pour nous, un script bash (basé sur ce script) fait tout ça, et bien plus :) ; il est disponible sur mon github. Pour l’utiliser :
$ chmod +x integration_ubuntu_1304.sh
$ sudo ./integration_ubuntu_1304.sh

Il nécessite une connexion internet [sic], d’être root et d’avoir déclaré l’ordinateur en « Autorisé non filtré » (pour traverser le proxy tant qu’il n’y a pas d’authentification LDAP).

Conclusion

Pour la suite, on peut personnaliser les sessions utilisateurs en modifiant le fichier /etc/profile.d/gnome.sh.

En fait, c’est Tivoli qui limite beaucoup l’installation d’un système linux (format de l’unique partition, utilisation forcée de lilo, ré-écriture du fstab…). Il existe certainement mieux pour créer et déployer des images linux.

Liens utiles