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
- Supervisar la connectivitat de la xarxa: Verificar la disponibilitat de dispositius a la xarxa.
- Recopilar estadístiques de xarxa: Obtenir informació sobre l'ús de la xarxa.
- Generar informes: Crear informes detallats amb les dades recopilades.
- 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
oip
. - Redirecció i piping en Bash.
- Creació i execució de scripts en Bash.
Estructura del Projecte
- Configuració Inicial
- Supervisió de la Connectivitat
- Recopilació d'Estadístiques de Xarxa
- Generació d'Informes
- Automatització de la Monitorització
- Configuració Inicial
Creació de l'Script
Comencem creant un fitxer per al nostre script:
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..."
- 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
- 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
- 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
- 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.
Curs de Programació en Bash
Mòdul 1: Introducció a Bash
- Què és Bash?
- Configuració del teu Entorn
- Navegació Bàsica per la Línia de Comandes
- Entenent la Shell
Mòdul 2: Comandes Bàsiques de Bash
- Operacions amb Fitxers i Directoris
- Comandes de Processament de Text
- Permisos i Propietat de Fitxers
- Redirecció i Piping
Mòdul 3: Conceptes Bàsics de Scripting
Mòdul 4: Scripting Intermedi
Mòdul 5: Tècniques Avançades de Scripting
- Operacions Avançades amb Fitxers
- Gestió de Processos
- Gestió d'Errors i Depuració
- Expressions Regulars
Mòdul 6: Treballant amb Eines Externes
Mòdul 7: Automatització i Programació
- Treballs Cron
- Automatització de Tasques
- Scripts de Còpia de Seguretat i Restauració
- Monitorització i Registre
Mòdul 8: Millors Pràctiques i Optimització
- Escriure Codi Llegible
- Optimització de Scripts en Bash
- Consideracions de Seguretat
- Control de Versions amb Git