Introducció

En aquest projecte, crearem una eina de monitorització de xarxa utilitzant Bash. Aquesta eina ens permetrà supervisar l'estat de la nostra xarxa, detectar problemes de connectivitat i generar informes detallats. Aprendrem a utilitzar comandes de xarxa bàsiques i avançades, així com a automatitzar la recopilació i l'anàlisi de dades.

Objectius del Projecte

  1. Supervisar la connectivitat de la xarxa: Verificar la disponibilitat de dispositius a la xarxa.
  2. Recopilar estadístiques de xarxa: Obtenir informació sobre l'ús de la xarxa.
  3. Generar informes: Crear informes detallats amb les dades recopilades.
  4. Automatitzar la monitorització: Configurar l'eina perquè s'executi automàticament a intervals regulars.

Requisits Previs

Abans de començar, assegura't de tenir coneixements bàsics sobre:

  • Comandes de xarxa com ping, netstat, ifconfig o ip.
  • Redirecció i piping en Bash.
  • Creació i execució de scripts en Bash.

Estructura del Projecte

  1. Configuració Inicial
  2. Supervisió de la Connectivitat
  3. Recopilació d'Estadístiques de Xarxa
  4. Generació d'Informes
  5. Automatització de la Monitorització

  1. Configuració Inicial

Creació de l'Script

Comencem creant un fitxer per al nostre script:

touch network_monitor.sh
chmod +x network_monitor.sh

Estructura Bàsica de l'Script

Afegim l'estructura bàsica al nostre script:

#!/bin/bash

# Eina de Monitorització de Xarxa

# Configuració
LOG_FILE="network_monitor.log"
REPORT_FILE="network_report.txt"

# Funcions
function log {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}

function generate_report {
    echo "Informe de Monitorització de Xarxa - $(date '+%Y-%m-%d %H:%M:%S')" > $REPORT_FILE
    echo "----------------------------------------" >> $REPORT_FILE
    cat $LOG_FILE >> $REPORT_FILE
}

# Inici de l'Script
log "Iniciant la monitorització de la xarxa..."

  1. Supervisió de la Connectivitat

Comanda ping

Utilitzarem la comanda ping per verificar la connectivitat amb diferents dispositius de la xarxa.

# Llista de dispositius a supervisar
DEVICES=("192.168.1.1" "192.168.1.2" "google.com")

function check_connectivity {
    for DEVICE in "${DEVICES[@]}"; do
        if ping -c 1 $DEVICE &> /dev/null; then
            log "Connectivitat amb $DEVICE: OK"
        else
            log "Connectivitat amb $DEVICE: ERROR"
        fi
    done
}

# Crida a la funció de supervisió
check_connectivity

  1. Recopilació d'Estadístiques de Xarxa

Comanda netstat

Utilitzarem netstat per obtenir informació sobre les connexions de xarxa.

function collect_network_stats {
    log "Recopilant estadístiques de xarxa..."
    netstat -i >> $LOG_FILE
}

# Crida a la funció de recopilació
collect_network_stats

  1. Generació d'Informes

Funció per Generar Informes

Ja hem definit una funció bàsica per generar informes. Ara l'actualitzarem per incloure més informació.

function generate_report {
    echo "Informe de Monitorització de Xarxa - $(date '+%Y-%m-%d %H:%M:%S')" > $REPORT_FILE
    echo "----------------------------------------" >> $REPORT_FILE
    echo "Estadístiques de Connectivitat:" >> $REPORT_FILE
    grep "Connectivitat" $LOG_FILE >> $REPORT_FILE
    echo "" >> $REPORT_FILE
    echo "Estadístiques de Xarxa:" >> $REPORT_FILE
    grep -A 10 "Recopilant estadístiques de xarxa" $LOG_FILE >> $REPORT_FILE
}

# Generar l'informe
generate_report

  1. Automatització de la Monitorització

Utilitzant cron

Podem utilitzar cron per automatitzar l'execució del nostre script a intervals regulars.

# Edita el crontab
crontab -e

# Afegeix la següent línia per executar l'script cada hora
0 * * * * /ruta/al/teu/script/network_monitor.sh

Codi Complet

#!/bin/bash

# Eina de Monitorització de Xarxa

# Configuració
LOG_FILE="network_monitor.log"
REPORT_FILE="network_report.txt"

# Funcions
function log {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}

function check_connectivity {
    DEVICES=("192.168.1.1" "192.168.1.2" "google.com")
    for DEVICE in "${DEVICES[@]}"; do
        if ping -c 1 $DEVICE &> /dev/null; then
            log "Connectivitat amb $DEVICE: OK"
        else
            log "Connectivitat amb $DEVICE: ERROR"
        fi
    done
}

function collect_network_stats {
    log "Recopilant estadístiques de xarxa..."
    netstat -i >> $LOG_FILE
}

function generate_report {
    echo "Informe de Monitorització de Xarxa - $(date '+%Y-%m-%d %H:%M:%S')" > $REPORT_FILE
    echo "----------------------------------------" >> $REPORT_FILE
    echo "Estadístiques de Connectivitat:" >> $REPORT_FILE
    grep "Connectivitat" $LOG_FILE >> $REPORT_FILE
    echo "" >> $REPORT_FILE
    echo "Estadístiques de Xarxa:" >> $REPORT_FILE
    grep -A 10 "Recopilant estadístiques de xarxa" $LOG_FILE >> $REPORT_FILE
}

# Inici de l'Script
log "Iniciant la monitorització de la xarxa..."
check_connectivity
collect_network_stats
generate_report

Conclusió

En aquest projecte, hem creat una eina de monitorització de xarxa en Bash que ens permet supervisar la connectivitat, recopilar estadístiques de xarxa i generar informes detallats. També hem après a automatitzar l'execució de l'script utilitzant cron. Aquesta eina pot ser ampliada i personalitzada segons les necessitats específiques de la teva xarxa.

© Copyright 2024. Tots els drets reservats