# Plugin cambio configuración switches

# Introducción

**Ver**. 22-02-2023

Con este plugin puedes monitorizar la configuración de los switches, pudiendo saber si estos han tenido cambios o no.

<div id="bkmrk-"></div><div id="bkmrk-tipo%3A-plug-in-de-ser"><div>**Tipo**: Plug-in de servidor</div></div>

# Matriz de compatibilidad

<table border="1" id="bkmrk-sistemas-donde-se-ha"><tbody><tr><td>**Sistemas donde se ha probado**</td><td>CentOS 7, Fedora, rocky linux

</td></tr><tr><td>**Sistemas donde debería funcionar**</td><td>Cualquier sistema linux

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

# Pre requisitos

- Tener el **Data Server** de Pandora FMS habilitado
- Tener el **Plugin Server** de Pandora FMS habilitado
- Es necesario crear un archivo con nombre check-config-changes.log y con permisos en /tmp/ o en la ruta que quieras almacenar los log.

# Parámetros

**Parámetros**

<table border="1" id="bkmrk-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%C2%A0-%C2%A0-" style="height: 256px;"><tbody><tr style="height: 24px;"><td style="height: 24px; width: 148.316px;">`--address`</td><td style="height: 24px; width: 507.882px;">IP o nombre de host del switch</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 148.316px;">`--username`</td><td style="height: 29px; width: 507.882px;">Nombre de usuario</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 148.316px;">`--sshpassword`</td><td style="height: 29px; width: 507.882px;">Contraseña SSH del switch</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 148.316px;">`--enablepassword`</td><td style="height: 29px; width: 507.882px;">Enable password del switch</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 148.316px;">`--sleep`</td><td style="height: 29px; width: 507.882px;">Tiempo de espera entre órdenes</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 148.316px;">`--command`</td><td style="height: 29px; width: 507.882px;">Comando Ssh a ejecutar</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 148.316px;">`--path_dir`</td><td style="height: 29px; width: 507.882px;">Ruta donde se guardará el archivo de salida.Ruta donde se guardará el archivo, por ejemplo : /tmp/. Por defecto:/tmp/ Importante debe terminar en /.</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 148.316px;">`--path_log`</td><td style="height: 29px; width: 507.882px;">--path\_log", help="ruta donde se guardará el archivo de registro.por ejemplo : /tmp/ .Por defecto:/tmp/ .Importante debe terminar en /.</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 148.316px;">`--last_line`</td><td style="height: 29px; width: 507.882px;">Última línea de la configuración esperada, esto evitará posibles fallos al recibir el comando, en caso de que la salida no se devuelva completa. (Opcional)</td></tr></tbody></table>

**Parámetros configuración pandora**

<div id="bkmrk---agent_name-nombre-"><div><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div><table border="1" id="bkmrk-par%C3%A1metro-descripci%C3%B3" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px;"><tbody><tr><td style="width: 190.99px;">`--agent_name`</td><td style="width: 611.997px;">Nombre del agente.</td></tr><tr><td style="width: 190.99px;">`--tentacle_port`</td><td style="width: 611.997px;">Puerto de tentacle.Por defecto 41121(opcional)</td></tr><tr><td style="width: 190.99px;">`--tentacle_address`</td><td style="width: 611.997px;">Ip del servidor tentacle al que mandar los datos(opcional)</td></tr><tr><td style="width: 190.99px;">`<span class="s">-g</span><span class="p">,</span> <span class="s">--group'</span>`</td><td style="width: 611.997px;">Grupo de destino de Pandora FMS (opcional)</td></tr><tr><td style="width: 190.99px;">`--data_dir`</td><td style="width: 611.997px;">Directorio de datos de Pandora FMS. **Por defecto** es /var/spool/pandora/data\_in/ (opcional)</td></tr><tr><td style="width: 190.99px;">`--as_agent_plugin`</td><td style="width: 611.997px;">Es opcional, si quieres que el plugin sea de agente y te meta los módulos en el agente de pandora, ejecuta esto con un 1 (opcional)</td></tr></tbody></table>

</div></div></div>**\* El comando a usar en el parámetro cambia según el tipo de switch a monitorizar**

por ejemplo en los de alcatel es :

show configuration status

pero en las de cisco es :

show running-config

**\* El parámetro path dir si no se funciona se usara tmp por defecto.**

**\* Es importante crear un archivo para los logs como se especifica en el apartado requisitos previos y darle permisos para que el plugin pueda escribir en el si ocurriera un fallo.**

**\* El parámetro last line es opcional, si la devolución de la configuración esperada siempre suele tener la misma estructura y acaba siempre con la misma línea (por ejemplo en cisco es end), puede ser útil para evitar falsos cambios debido a una ejecucion a la que no le ha dado tiempo a obtener la salida completa.**

# Ejecución manual

```
python3 check-config-changes.py --address <ip> --username <username> --sshpassword <password> --enablepassword <enable pass> --agent-name <nombre agente> --command <comando a ejecutar> --as_agent_plugin 1 --sleep <segundos entre comandos>
```

Ejemplo salida si no hay diferencias:

[![image-1679402416602.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-03/scaled-1680-/image-1679402416602.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-03/image-1679402416602.png)

Ejemplo de salida con diferencias:

[![image-1679402457114.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-03/scaled-1680-/image-1679402457114.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-03/image-1679402457114.png)

# Configuración en PandoraFMS

**Como plugin de servidor**

**Instalación manual**

Iremos a servidores &gt; plugins:

[![image-1629974405286.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1629974405286.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1629974405286.png)

Pinchamos en añadir:

[![image-1629974430627.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1629974430627.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1629974430627.png)

Le ponemos en nombre y la descripción que se prefiera.

Metemos como comando la ejecución con la ruta del plugin:

```
/path check-config-changes.py
```

<p class="callout info align-center">Recuerda que la ruta recomendada para el uso de los plugins de servidor es: /usr/share/pandora\_server/util/plugin/</p>

Y en parámetros del plugin introduciremos estos seguidos de la macro "\_field\_ &lt;N&gt;\_", son obligatorios los parámetros de --address, --username, --sshpassword, --enablepassword, --command y --agent\_name.

<p class="callout warning">Recuerda usar el parámetro --agent\_name , para indicar el agente en el que se crearan los módulos o el que se creará por defecto.</p>

<p class="callout warning">Es recomendable usar el parámetro --sleep con 1 e ir investigando que configuración es la mejor adecuada para cada caso en el uso de este parámetro. Para algunos switches quizás sea 1 pero otros pueden necesitar uno más alto.</p>

Una vez hecho esto, daremos a "crear".

Una vez hecho esto, solo queda llamarlo por lo que iremos a la vista de algún agente y crearemos un módulo de complementos:

[![image-1646741530197.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/scaled-1680-/image-1646741530197.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-03/image-1646741530197.png)

Le daremos un nombre y en el apartado "plugin" pondremos el que acabamos de configurar.

Una vez hecho esto, damos a crear.

Si el modulo se muestra con 1, quiere decir que se esta ejecutando correctamente.

# Módulos generados por el plugin

El plugin creará un agente con el módulo de diferencias o meterá este en un agente ya existente. Para las dos opciones se usa el paŕametro --agent\_name.

Ejemplo de módulo de diferencias.

[![image-1679401692071.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-03/scaled-1680-/image-1679401692071.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-03/image-1679401692071.png)

De no haber cambios el plugin no creará ningún módulo y solo imprimirá un 1 en el modulo de plugin que se haya creado en el agente para la ejecución de este plugin.