Supervision - Contrôle TP - Jeudi 13 février 2025
Environnement de travail
Créez un dossier ~/r5b08-ctp et copiez-y le fichier
ctp-rattrapage/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
moniteurd'adresse 192.168.62.10poste1d'adresse 192.168.62.21poste2d'adresse 192.168.62.22
- l'utilisateur
rootde 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 poste1etposte2ont un agent SNMP opérationnel- avec
lecturecomme communautéro - avec
ecriturecomme 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 moniteurvous connecterootsurmoniteursans interactionssh poste1vous connecterootsurposte1sans interactionssh poste2vous connecterootsurposte2sans 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é
roest fixée àpublicen 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/ctpla 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
smokepingdont au moins :/usr/share/doc/smokepingsmokeping_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-Bet le titreContrôle TPavec, 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
FPingsurposte1etposte2; - mettre en place un sous-menu DNS avec des sondes
DNSpour la résolution dewww.ffdn.orget dewww.univ-lille.frpar le serveur DNS d'adresse172.18.48.31.
- mettre en place le menu principal sous le nom
Sauvegarde déduplicative
- Installez les paquets
borgbackupetborgbackup-docsur votre moniteur - Lisez au minimum la documentation de la commande
borg(1) - Créez un dépôt (repository) dans
/srv/borgqui 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