Supervision - Contrôle TP - Jeudi 13 février 2025
Environnement de travail
Créez un dossier ~/r5b08-ctp
et copiez-y le fichier
ctp/Vagrantfile fourni ici (son contenu est également présent en
fin de sujet).
Construisez dans ce dossier l'environnement de travail avec vagrant en utilisant le fichier fourni.
L'environnement est celui des TP de la ressource :
- 3 machines
moniteur
d'adresse 192.168.62.10poste1
d'adresse 192.168.62.21poste2
d'adresse 192.168.62.22
- l'utilisateur
root
de chacune des machines autorise les connexions ssh avec votre clé publique par défaut (celle dans~/.ssh/id_rsa.pub
) - les commandes de la bibliothèque net-snmp sont installées avec les MIBS standards sur
moniteur
poste1
etposte2
ont un agent SNMP opérationnel- avec
lecture
comme communautéro
- avec
ecriture
comme communautérw
- qui répond pour les requêtes sous l'OID
1.3.6.1.2
- avec
Modifiez votre configuration ssh
de façon à ce que :
ssh moniteur
vous connecteroot
surmoniteur
sans interactionssh poste1
vous connecteroot
surposte1
sans interactionssh poste2
vous connecteroot
surposte2
sans interaction
Utilisation net-snmp
Il existe une imprimante sur le réseau du département dont l'adresse ip est 172.18.48.121
.
Cette imprimante offre un accès SNMP :
- la communauté
ro
est fixée àpublic
en version snmpv2c ; - elle offre un accès à tous les objets définis dans la mib
/home/public/r5b08/ctp/HP-LASERJET-COMMON-MIB.mib
; - cette mib crée un module nommé
HP-LASERJET-COMMON-MIB
.
À partir de ces informations et en utilisant les commandes de la librairie net-snmp depuis votre moniteur :
- déterminez la commande permettant de récupérer le nombre total de page imprimés sur le media 2 (nommé Plain) de l'imprimante ;
- déterminez ce nombre ;
- placez dans le fichier texte
/etc/ctp
la réponse aux deux questions précédentes (une réponse par ligne).
Installation outils de métrologie
- Installer smokeping sur votre moniteur ;
- Lire la documentation de
smokeping
dont au moins :/usr/share/doc/smokeping
smokeping_config(5)
smokeping::probes::fping(3)
smokeping::probes::dns(3)
- Fixer les paramètres des bases à 5 sondages de 3 tentatives concurrentes toutes les minutes ;
- Configurer
smokeping
- mettre en place le menu principal sous le nom
BUT-B
et le titreContrôle TP
avec, par défaut, des aperçus sur la dernière heure et des détails sur la dernière heure, le dernier quart d'heure et la dernière minute ; - mettre en place un sous-menu Réseau avec des sondes
FPing
surposte1
etposte2
; - mettre en place un sous-menu DNS avec des sondes
DNS
pour la résolution dewww.ffdn.org
et dewww.univ-lille.fr
par le serveur DNS d'adresse172.18.48.31
.
- mettre en place le menu principal sous le nom
Sauvegarde déduplicative
- Installez les paquets
borgbackup
etborgbackup-doc
sur votre moniteur - Lisez au minimum la documentation de la commande
borg(1)
- Créez un dépôt (repository) dans
/srv/borg
qui devra être chiffré avec le motprotection
. - Créez une archive, nommée
ctp
, dans votre dépôt contenant une sauvegarde de l'intégralité du dossier/etc
.
Retour
En fin de TP copiez une archive au format tar.gz
dont le nom doit
être de la forme LOGIN-MACHINE.tar.gz
(avec LOGIN
remplacé par
votre identifiant et MACHINE
par moniteur
, poste1
ou
poste2
) dans le répertoire /home/public/r5b08/etu
. Ces
archives doivent contenir l'intégralité du répertoire /etc
et /srv
de moniteur
, ainsi que l'intégralité du répertoire /etc
de
poste1
et poste2
Les commandes suivantes, regroupées dans le script shell
recuperer-ctp
permettent de faire tout ça depuis votre machine
physique :
login=$(id -un) ssh moniteur "cd / && tar -zcf $login.tar.gz etc srv" scp moniteur:/$login.tar.gz /home/public/r5b08/etu/$login-moniteur.tar.gz ssh poste1 "cd / && tar -zcf $login.tar.gz etc srv" scp poste1:/$login.tar.gz /home/public/r5b08/etu/$login-poste1.tar.gz ssh poste2 "cd / && tar -zcf $login.tar.gz etc srv" scp poste2:/$login.tar.gz /home/public/r5b08/etu/$login-poste2.tar.gz
Annexes
Vagrantfile
Vagrant.configure("2") do |config| # configuration virtualbox config.vm.provider "virtualbox" do |vbox| vbox.linked_clone = true end config.vm.box = "debian/bookworm64" # accès par nom $hosts = <<-EOF grep -q moniteur /etc/hosts || echo "192.168.62.10 moniteur" >>/etc/hosts grep -q poste1 /etc/hosts || echo "192.168.62.21 poste1" >>/etc/hosts grep -q poste2 /etc/hosts || echo "192.168.62.22 poste2" >>/etc/hosts EOF config.vm.provision "shell", run: "always", inline: $hosts # Montage dossier config.vm.synced_folder ".", "/vagrant", owner: "root", group: "root", mount_options: ["uid=0", "gid=0"] # installation des outils $outils = <<-EOF export DEBIAN_FRONTEND=noninteractive sed -i 's/main.*$/main contrib non-free-firmware non-free/' /etc/apt/sources.list apt-get -qy update apt-get -qy install file less netcat-openbsd net-tools nmap screen emacs vim gnuplot rrdtool xauth apt-get -qy clean EOF config.vm.provision "shell", inline: $outils # Accès SSH config.vm.provision "file", source: "~/.ssh/id_rsa.pub", destination: "/tmp/id_rsa.pub", run: "always" $ssh = <<-EOF mkdir -p /root/.ssh cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys rm /tmp/id_rsa.pub cat ~vagrant/.ssh/authorized_keys >> /root/.ssh/authorized_keys EOF config.vm.provision "shell", inline: $ssh, run: "always", privileged: true # moniteur $superviseur = <<-EOF apt-get -qy install snmp snmp-mibs-downloader cp /etc/snmp/snmp.conf /etc/snmp/snmp.conf.dpkg sed -i -e 's/^mibs :/#mibs :/' /etc/snmp/snmp.conf EOF $postes = <<-EOF apt-get -qy install snmpd cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.dpkg echo "agentAddress udp:161" >/etc/snmp/snmpd.conf echo "rocommunity lecture moniteur 1.3.6.1.2" >>/etc/snmp/snmpd.conf echo "rwcommunity ecriture moniteur 1.3.6.1.2" >>/etc/snmp/snmpd.conf systemctl restart snmpd EOF # moniteur config.vm.define "moniteur" do |moniteur| moniteur.vm.network "private_network", ip: "192.168.62.10" moniteur.vm.provision "shell", inline: "hostnamectl hostname moniteur" moniteur.vm.provision "shell", inline: $superviseur end # poste1 config.vm.define "poste1" do |poste1| poste1.vm.network "private_network", ip: "192.168.62.21" poste1.vm.provision "shell", inline: "hostnamectl hostname poste1" poste1.vm.provision "shell", inline: $postes end # poste2 config.vm.define "poste2" do |poste2| poste2.vm.network "private_network", ip: "192.168.62.22" poste2.vm.provision "shell", inline: "hostnamectl hostname poste2" poste2.vm.provision "shell", inline: $postes end end