L'objet de l'article est l'installation automatique du logiciel arduino et de bibliothèques additionnelles sur un lot de 14 PC avec Elementary OS installé comme système d'exploitation.
Connexion ssh sans mot de passe
Dans un premier temps, je vais m'affranchir du mot de passe pour une connexion à distance sur chacun des postes. Chaque poste, y compris le poste de déploiement possède un compte utilisateur nommé eleve. Pour une connexion avec ce compte sans mot de passe, il est nécessaire d'installer un serveur ssh sur chaque poste avec une clef rsa publique qui sera stocké dans le répertoire .ssh situé dans le répertoire personnel de l'utilisateur eleve :
Génération de la clef sur le poste de déploiement :
ssh-keygen -t rsa
Copie de la clef sur chacun des postes :
scp /home/eleve/.ssh/id_rsa.pub
ALL permettant une connexion de n'importe où.
Dans les réponse retournées par netstat, je fais une recherche de la chaine ESTABLISHED et doit extraire le numéro de PID qui se trouve en fin de ligne suivi par un / et des caractères.
Le traitement est le suivant :
sudo netstat -tanp | grep ESTABLISHED | cut -f1 -d' ' | rev | cut -d1 -f' ' | rev
Le PID doit être envoyé à la commande kill -9 exécutée en root (ajoutez /bin/kill -9 dans le fichier sudoers) :
sudo kill -9 $(sudo netstat -tanp | grep ESTABLISHED | cut -f1 -d' ' | rev | cut -d1 -f' ' | rev)
Je ne sais pas encore pourquoi, mais il me faut exécuter deux fois cette commande pour mettre fin à ma session ssh.
La commande aptitude devra être installée sur chaque poste et l'autorisation réalisée dans sudoers.
Recensement des fichiers nécessaires :
- Installation de arduino à l'aide d'aptitude.
- Copie du fichier ardublock-all.jar.jar dans le dossier ~/sketchbook/tools/ArduBlockTool/tool
- Copie du dossier AFMOTOR et de son contenu dans le dossier ~/sketchbook/libraries
Script d'installation :
Lancement du script :
A la connexion en ssh, le script peut être lancé automatiquement s'il porte de nom de rc et se trouve dans le répertoire .ssh de l'utilisateur. Il faudra, bien sur, ne pas le laisser à la fin de l'installation.
#!/bin/bash
sudo aptitude -y install arduino
mkdir ~/sketchbook
mkdir ~/sketchbook/tools
mkdir ~/sketchbook/tools/ArduBlockTool
mkdir ~/sketchbook/tools/ArduBlockTool/tool
mkdir ~/sketchbook/libraries/
rm ~/.ssh/rc
sudo kill -9 $(sudo netstat -tanp | grep ESTABLISHED | cut -f1 -d/ | rev | cut -f1 -d' ' | rev)
sudo kill -9 $(sudo netstat -tanp | grep ESTABLISHED | cut -f1 -d/ | rev | cut -f1 -d' ' | rev)
(aptitude install est à ajouter dans le fichier sudoers)
Appelons ce script arduino et donnons lui les droits d'exécution aprés l'avoir sauvé dans le répertoire .ssh
Boucle d'installation sur tous les postes :
#!/bin/bash
for i in `seq 61 74`
do
scp .ssh/arduino 172.17.32.$i:~/.ssh/rc
ssh 172.17.32.$i
scp ardublock-all.jar.jar 172.17.32.$i:~/sketchbook/tools/ArduBlockTool/tool/
scp -r ./AFMotor/ 172.17.32.$i:~/sketchbook/libraries/
done
Reste à nommer le fichier arduino.sh et à le rendre exécutable.
Remarque : Pour plus de sécurité un utilisateur de maintenance pourra être créé à la place de l'utilisateur eleve.