Contrôle des ordinateurs à distance
À la maison, chaque enfant à au moins un ordinateur Linux (ordinateur fixe et Rapsberry Pi). Le contrôle à distance s'est posé pour deux raisons : comment moduler à volonté le débit de leur carte réseau et comment arrêter leur ordinateur en dehors des horaires autorisés ?
Évidemment que j'ai un accès administrateur sur leur machine et qu'il met possible de m'y connecter avec ssh en root. Mais me connecter sur chaque machine enfin d'envoyer les commandes nécessaires systématiquement, cela devient rébarbatif et lassant. Donc, j'ai développer un script qui me permet de :
- se connecter à la machine distante
- envoyer des commandes de maintenance - sauvegarde et mise à jour
- envoyer des commandes de contrôle - restriction horaire et modulation du débit réseau
Enfin ça, c'est l'idéal. Pour l'instant c'est plutôt une ébauche mais qui est riche d'enseignement. Pour une connexion à distance réussie, il faut déjà avoir réalisé une connexion ssh par clé sur les machines désirées. Ensuite, toutes les commandes envoyées au PC s’exécutent par ssh.
1. Quelques exemples de commandes
1.1 Éteindre le PC à distance
pc_rsync=dskluc001 ssh -t root@$pc_rsync 'systemctl poweroff'
1.2 Limiter le débit de la carte réseau
pc_rsync=dskluc001 ssh root@$pc_rsync "wondershaper eth0 $limit_eth 1000000"
1.3 Sauvegarder des documents
Le sauvegarde est une sauvegarde incrémentielle : le programme copie toutes les nouveautés et modifications de la source et efface tous les dossiers et fichiers plus présent sur la source.
Pendant le processus de sauvegarde, un fichier .pid est créé afin de ne pas avoir plusieurs sauvegarde en cours, de manière simultanée. Le dossier /media/disk_21/users/
correspond à l'espace de stockage des sauvegarde sur le NAS.
La commande $$
permet d'envoyer le PID actuel du process.
user_rsync=luc pc_rsync=dskluc001 if [ ! -f /root/rsync_$pc_rsync_$user_rsync.pid ]; then echo $$>>/root/rsync_$pc_rsync_$user_rsync.pid rsync --delete -azvPe ssh root@$pc_rsync:/home/$user_rsync/ /media/disk_21/users/$user_rsync/sauvegarde/ rm /root/rsync_$pc_rsync_$user_rsync.pid fi