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 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.:~/.ssh/authaurized_keys2

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.