|
|
Línia 7: |
Línia 7: |
| ---- | | ---- |
| [[Media:latencies.sh]] | | [[Media:latencies.sh]] |
− | #!/bin/bash
| |
| | | |
− | # Aquest script envia pings contra elements de xarxa i genera alarmes en format e-mail
| + | ---- |
− | # depenent de les latencies programades com a perilloses i critiques.
| + | |
− | # Josep Figueras i Franch
| + | |
− | # 2012-03-13 - Versió 2.1
| + | |
− | | + | |
− | # Manual per configurar el servidor de correu:
| + | |
− | # En sistemes Debian/Ubuntu:
| + | |
− | # apt-get update && apt-get install ssmtp && apt-get install mailutils
| + | |
− | # Editem el fitxer /etc/ssmtp/ssmtp.conf i hi afegim aquesta configuracio:
| + | |
− | # AuthUser=robot.guifi@gmail.com
| + | |
− | # AuthPass=robot_guifi
| + | |
− | # FromLineOverride=YES
| + | |
− | # mailhub=smtp.gmail.com:587
| + | |
− | # UseSTARTTLS=YES
| + | |
− | | + | |
− | # Comanda per executar l'script: bash ./link-test_Manresa2Castelladral &
| + | |
− | # Per matar el procés: ps aux | grep link-test_Manresa2Castelladral
| + | |
− | # Busquem PID i executem kill -9 #PID
| + | |
− | | + | |
− | # I aquesta es la comanda per enviar mails des de la shell:
| + | |
− | #echo "COS_DEL_MISSATGE" | mail -s "TITOL_DEL_MISSATGE" CORREU_DESTINATARI@gmail.com
| + | |
− | | + | |
− | #-----------------------------------------------------------------------------------------
| + | |
− | #FUNCIO QUE ANALITZA UN DISPOSITIU DE XARXA
| + | |
− | #-----------------------------------------------------------------------------------------
| + | |
− | function Analitza_Host {
| + | |
− | LATENCIA=`ping -n -c $NOMBRE_PINGS_PER_CALCULAR_PROMIG $1 | awk -F/ '/^rtt/ { print $5 }' | awk -F '.' '{ print $1; }'`
| + | |
− | | + | |
− | if [ ! -n "$LATENCIA" ]
| + | |
− | then
| + | |
− | # Afegim el missatge d'error al log
| + | |
− | echo "ERROR!: [`date +%D` `date +%T`]: L'equip $1 no respon als pings!" >> $RUTA_LOG
| + | |
− | | + | |
− | # Enviem un mail al responsable del dispositiu per tal que solventi el problema
| + | |
− | echo "[`date +%D` `date +%T`]: El robot de guifi.net ha detectat un problema al dispositiu $1. El dispositiu no respon als pings!" | mail -s "Problema detectat $1" $2
| + | |
− | | + | |
− | # Enviem tambe un mail a l'administrador
| + | |
− | echo "[`date +%D` `date +%T`]: El robot de guifi.net ha detectat un problema al dispositiu $1. El dispositiu no respon als pings!" | mail -s "Problema detectat $1" $MAIL_ADMINISTRADOR
| + | |
− | | + | |
− | elif [ $LATENCIA -le "$LLINDAR_PERILLOS" ]
| + | |
− | then
| + | |
− | ESTAT_LATENCIA="OK"
| + | |
− | | + | |
− | elif [ $LATENCIA -le "$LLINDAR_CRITIC" ]
| + | |
− | then
| + | |
− | ESTAT_LATENCIA="PERILL"
| + | |
− | | + | |
− | # Afegim el missatge d'error al log
| + | |
− | echo "$ESTAT_LATENCIA: [`date +%D` `date +%T`]: Temps de resposta promig contra el servidor $1= $LATENCIA ms" >> $RUTA_LOG
| + | |
− | | + | |
− | else
| + | |
− | ESTAT_LATENCIA="CRITIC"
| + | |
− | | + | |
− | # Afegim el missatge d'error al log
| + | |
− | echo "$ESTAT_LATENCIA: [`date +%D` `date +%T`]: Temps de resposta promig contra el servidor $1= $LATENCIA ms" >> $RUTA_LOG
| + | |
− | | + | |
− | # Enviem un mail al responsable del dispositiu per tal que solventi el problema
| + | |
− | echo "[`date +%D` `date +%T`]: El robot de guifi.net ha detectat un problema al dispositiu $1. Latencia= $LATENCIA ms" | mail -s "Problema detectat al dispositiu $1" $2
| + | |
− | | + | |
− | # Enviem tambe un mail a l'administrador
| + | |
− | echo "[`date +%D` `date +%T`]: El robot de guifi.net ha detectat un problema al dispositiu $1. Latencia= $LATENCIA ms" | mail -s "Problema detectat al dispositiu $1" $MAIL_ADMINISTRADOR
| + | |
− | | + | |
− | fi
| + | |
− | }
| + | |
− | #-----------------------------------------------------------------------------------------
| + | |
− | | + | |
− | #Les variables d'entorn
| + | |
− | NOMBRE_PINGS_PER_CALCULAR_PROMIG=5
| + | |
− | LLINDAR_PERILLOS=40 # Si la latència és superior a aquest valor, es genera un missage de PERILL
| + | |
− | LLINDAR_CRITIC=60 # Per latències superiors a aquest valor es genera un missatge CRITIC i s'envien mails als responsables
| + | |
− | RUTA_LOG="/var/log/Errors_Manresa-Castelladral.log" # Ruta on guardarem els missatges d'errors detectats
| + | |
− | MAIL_ADMINISTRADOR="administrador@gmail.com" # Correu electrònic de l'administrador del segment de xarxa
| + | |
− | | + | |
− | while true;
| + | |
− | do
| + | |
− | | + | |
− | # Llistat de dispositius a analitzar
| + | |
− | # Format: Analitza_Host DISPOSITIU_A_ANALITZAR E-MAIL_DEL_RESPONSABLE_DEL_DISPOSITIU
| + | |
− | # Origen: Sant Ignasi (Manresa)
| + | |
− | # Desti: Castelladral
| + | |
− | Analitza_Host ManresaServerGuifi--14267.ip.guifi.net responsble1@gmail.com
| + | |
− | Analitza_Host MNKoutenST1--32097.ip.guifi.net responsable2@guifi.net
| + | |
− | Analitza_Host SLLTorreTelST2--29076.ip.guifi.net responsable3@gmail.com
| + | |
− | Analitza_Host SLLTorreTelST3--36277.ip.guifi.net responsable4@hotmail.com
| + | |
− | Analitza_Host 10.228.5.1 responsable5@gmail.com
| + | |
− | | + | |
− | # Esperem 30 minuts abans no tornem a analitzar el segment de xarxa
| + | |
− | sleep 1800
| + | |
− | done
| + | |
El present script analitza la latència entre els diversos elements d'un segment de xarxa.
En cas que la latència sigui superior a un valor prefixat a l'script, s'envia un e-mail al responsable del "trasto"
i també un altre a l'administrador per tal de detectar futurs problemes greus abans que arribin a ser greus.
També genera un log amb els errors lleus i greus.
El propi script intenta ser "auto-explicatiu":