# Supervision - Nagios

Contient les procédures liées au systèmes de supervision Nagios et ses agents.

# Nagios / NSclient++ - Utiliser des scripts powershell pour les checks

<table id="bkmrk-difficult%C3%A9%2A-%3Cdescrip" style="border-collapse: collapse; width: 100%; height: 46.8px; border-width: 1px; border-style: hidden;"><colgroup><col style="width: 20%;"></col><col style="width: 80%;"></col></colgroup><tbody><tr style="height: 46.8px;"><td style="height: 46.8px; border: 1px groove rgb(52,73,94);">[![Confirmé.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/yexconfirme-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/yexconfirme-png.png)</td><td style="height: 46.8px; border-width: 1px; background-color: rgb(236,202,250); vertical-align: top;">Difficulté : Confirmé

Notions : Supervision, nagios, agent, NSclient++, powershell.

</td></tr></tbody></table>

<p class="callout info">S'applique à : Nagios / NS client ++ toutes versions</p>

---

### <span style="color: rgb(52, 73, 94);">**<span style="text-decoration: underline;">I.Introduction</span>**</span>

Certaines informations ont besoins d'être monitorée mais ne sont accessibles que via des requêtes Powershell locales.

<p class="callout danger">L’exécution de scripts doit être permise sur la machine. Pour cela utiliser la commande : ***Set-executionPolicy Unrestricted***</p>

---

### **<span style="text-decoration: underline;"><span style="color: rgb(52, 73, 94); text-decoration: underline;">II. Normalisation</span>  
</span>**

Lors de l'écriture du script il est essentiel de respecter les points suivants :

- Nagios se base sur les Exit Codes. Il reconnaît les valeurs suivantes :
    
    
    - 0 : OK
    - 1 : Warning
    - 2 : Critical

Il faut donc prendre en compte lors de l'écriture du script que les exitcode doivent être générés et les 3 cas ci-dessus traités. Cela se fera en ajoutant la ligne suivante lors de la fin du traitement :

```powershell
exit  # Ce code est un <Niveau>
```

par exemple :

```powershell
exit 0 # This is the OK value
```

Si l’on veut pouvoir grapher ensuite les valeurs et les avoir correctement affichées dans le nagios, il faut respecter le formatage des données :

```powershell
write-host "<Etat> : <intitulé valeur 1> : $Valeur1, <Intitulé valeur 2> : $Valeur2 | '<variablenagios1>'=$Valeur1 '<variablenagios2>'=$Valeur2"
```

Par exemple :

```powershell
Write-Host "WARNING : Total Telnet connections : $TotalConnections, Active Telnet connections : $ActiveConnections | 'Nb_Total_Connections'=$TotalConnections 'Nb_Active_Connections'=$ActiveConnections"
```

---

### <span style="color: rgb(52, 73, 94);">**<span style="text-decoration: underline;">III. Déclarer le script sur NSClient++</span>**</span>

Pour que le script soit utilisable, il faut le placer dans le répertoire : <span style="color: rgb(132,63,161);">***<span class="fabric-text-color-mark">C:\\Program Files\\NSClient++\\scripts</span>***</span>

Puis il faut le déclarer dans à la fin du fichier <span style="color: rgb(132,63,161);">***<span class="fabric-text-color-mark">C:\\Program Files\\NSClient++\\nsclient.ini</span>***</span>

<details id="bkmrk-nsclient.ini-%5B%2Fsetti"><summary>nsclient.ini</summary>

```
[/settings/external scripts/scripts]
<nom du script 1 (sans .ps1)> = cmd /c echo scripts\<script1>.ps1; exit($lastexitcode) | powershell.exe -command -
<nom du script 2 (sans .ps1)> = cmd /c echo scripts\<script2>.ps1 $ARGS$; exit($lastexitcode) | powershell.exe -command -
```

</details><p class="callout info">Si le script prends des arguments en entrée, il faut également ajouter le bloc suivant avant le bloc ci-dessus : </p>

```
[/settings/external scripts]
allow arguments = True
```

Par exemple :

<details id="bkmrk-nsclient.ini-%5B%2Fsetti-0"><summary>nsclient.ini</summary>

```
[/settings/external scripts]
allow arguments = True

[/settings/external scripts/scripts]
Telnet_Connections = cmd /c echo scripts\Telnet_Connections.ps1; exit($lastexitcode) | powershell.exe -command -
Check_TelnetConnections = cmd /c echo scripts\Check_TelnetConnections.ps1 $ARGS$; exit($lastexitcode) | powershell.exe -command -
```

</details>---

### <span style="text-decoration: underline; color: rgb(52, 73, 94);">**IV. Tester le script**</span>

Sur le Nagios, l’on pourra tester le script avec la commande :

```
./check_nrpe -H <hotname ou ip> -c <nom de la commande> -a '<arguments>'
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/bDCimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/bDCimage-png.png)