Détails du script serveur d'enregistrement des clients » Historique » Révision 2
« Précédent |
Révision 2/3
(diff)
| Suivant »
Christophe Martin, 21/09/2010 14:21
Détails du script serveur d'enregistrement des clients¶
principe de fonctionnement du script¶
voir communications client-serveur lors de l'installation
détails de fonctionnement.¶
Le script enregistre tout dans un journal, succès et erreurs via syslog.
Il envoie un mail s'il y a réussite.
L'affichage du script est strictement contrôlé. Rien ne doit être affiché avant de savoir s'il faut émettre une ligne contenant le seul mot success
.
toute erreur est fatale, est enregistrée, et provoque l'affichage d'un message d'erreur (donc pas de ligne success
dans ce cas)
Le script est lancé par une clef ssh et reçoit un paramètre dans la variable d'environnement $SSH_ORIGINAL_COMMAND passée par sshd
Le script utilise également la variable d'environnement $SSH_CONNECTION passée par ssh elle aussi
Le script vérifie les points suivants. tout échec est fatal. :
- variable $SSH_CONNECTION
- non vide
- Le premier mot de $SSH_CONNECTION est une adresse IP valide
- si un enregistrement PTR est dans le DNS, alors il pointe vers un nom en *.univ-brest.fr
- variable $SSH_ORIGINAL_COMMAND est de la forme OS:logon
- OS
- est non vide
- ne contient que des lettres minuscules et des chiffres
- commence par une lettre
- pas plus de 20 caractères
- OS est un des mots connus du script (en dur dans le script, initialement
linux
win
mac
)
- logon
- est non vide
- Ne contient que des lettres minuscules des chiffres
- commence par une lettre
- pas plus de 16 caractères
- présent dans l'annuaire LDAP sur annuaire-iuem.univ-brest.fr
- OS
- présence préalable de la machine dans le fichier
/usr/local/etc/backuppc/hosts
de backuppc- NB, seul le fichier
hosts
est vérifié, pas la présence de sauvegarde précédentes éventuelles - Aucune présence actuelle
- présente avec le même nom d'utilisateur (évite usurpation d'identité). La présence est testée sous les deux formes
- IP [01] logon
- nom_dns [01] logon
- NB, seul le fichier
- Le service ssh est disponible sur le client.
Toutes les actions du script sont vérifiées par le code d'erreur de la commande précédente.
actions entreprises par le script¶
Dans l'ordre :
- Vérifications des variables d'environnement et calcul/obtention des valeur concernant le client :
ip
,client_hostname
,user
- Vérification de l'adresse IP
- Vérification de la présence préalable de la machine client
- Ajout de la machine client avec l'utilisateur
- message dans le journal annonçant l'ajout de la machine
- Génération d'une clef ssh spécifique et enregistrement de cette clef dans un répertoire dédié aux clients. Chaque appel génère une nouvelle clef.
- scan ssh du client, enregistrement dans
.ssh/known_hosts
- génération d'un fichier de config pour le client d'après un modèle dépendant de l'OS.
reload
du service backuppc- affichage pour le client
- success
- url: url de config de la machine cliente
- key: partie publique du biclef ssh pour ce client.
- courriel aux sysadmins pour prévenir de l'enregistrement de la machine.
données enregistrées dans le script.¶
Le script se termine à la ligne
__DATA__
En dessous de cette ligne se trouvent des données accessibles au script par la fonction block
.
Lors de l'enregistrement d'un client, un fichier de configuration pour le client est copié sous le nom "$client_pc_conf_dir/$client_hostname.pl"
soit /usr/local/etc/backuppc/pc/nom_du_client.pl
plutot que d'avoir à gérer un répertoire contenant les fichiers types à copier dans le répertoire /usr/local/etc/backuppc/pc
, les contenus des fichiers sont inclus directement dans le script, sous la forme de blocs de données délimités par des lignes de la forme :
===== Nom_du_bloc ===== ==========
Il existe autant de blocs qu'il y a de noms d'OS reconnus.
Les blocs peuvent être vides mais doivent exister. (techniquement non, mais c'est plus joli comme ça alors on, va le faire.)
Par exemple, le bloc pour les clients mac est
===== mac ===== $Conf{BackupFilesExclude} = { '/private/tmp' => [ '' ], '.Trash' => [ '' ], '/private/var/vm' => [ '' ], '/private/var/automount' => [ '' ], '/proc' => [ '' ], '/Trash' => [ '' ], '/sys' => [ '' ], '/automount' => [ '' ], 'Caches' => [ '' ], '/net' => [ '' ], '/private/var/tmp' => [ '' ], '/private/var/run' => [ '' ] }; ==========
Ainsi, chaque client macintosh enregistré a un fichier de configuration que l'utilisateur peut personnaliser et qui, par défaut, exclut les répertoires /dev
/proc
/Caches
/tmp
...
Modifications du script¶
Toute modification dans le dépôt doit être répercutée sur le serveur. Pour cela :
scp enregistre-auto-client root@backuppc:/var/lib/backuppc/local-bin/.
ou simplementmake scp
Mis à jour par Christophe Martin il y a environ 14 ans · 2 révisions