sobota, 13 lipca 2013

Logowanie zdarzeń sieciowych - Skrypt Bash cz.12

Przy pomocy 3 skryptów możemy zapewnić sobie logi dotyczące działania naszej karty sieciowej oraz tego czy urządzenia w sieci, które powinny być włączone są. Oczywiście można to zrobić przy pomocy ping, lub wykorzystać gotowe narzędzia, ale po co:)

1) Wysłanie ping'a w sieć, sprawdzenie które IP wraz z nazwami działają:

#!/bin/bash 
is_alive_ping() 
{  ping -c 1 $1 > /dev/null 
          [ $? -eq 0 ] >> echo Node with IP and $HOSTNAME: $i is up.
} 
for i in 192.168.56.{1..255} 
do 
is_alive_ping $i & disown 
done


2) Wysłanie maila z listą wyłączonych urządzeń:

Wywołanie skryptu:

./nazwa_skryptu adres1 adres2

./net2.sh 192.168.100.101 google.com

#!/bin/bash 
for i in $@ #sprawdzenie dla wszystkich parametrów 
do 
ping -c 1 $i & > /dev/null 
if [ $? -ne ]; then 
echo "`date`:$i $HOSTNAME host is down! " | mail -s "$i 
$HOSTNAME is down! " admin@geek-admin.blogspot.com 
fi 
done

3) Tworzenie loga z pracy sieci:

Wywołanie skryptu:

./nazwa_skryptu adres1 adres2

./net2.sh 192.168.100.101 google.com

#!/bin/bash  
LOG=/tmp/mylog.log  
SECONDS=3600  
EMAIL=admin@geek-admin.blogspot.com 
for i in $@; do  
echo "$i-UP!" > $LOG.$i  
done  
while true; do  
for i in $@; do  
ping -c 1 $i > /dev/null  
if [ $? -ne 0 ]; then    STATUS=$(cat $LOG.$i)  
if [ $STATUS != "$i-DOWN!" ]; then  
echo "`date`: ping failed, $i host is down!" |   mail -s "$i host is down!" $EMAIL 
   fi  
echo "$i-DOWN!" > $LOG.$i  
else   STATUS=$(cat $LOG.$i)
  if [ $STATUS != "$i-UP!" ]; then 
  echo "`date`: ping OK, $i host is up!" |   mail -s "$i host is up!" $EMAIL
  fi  
echo "$i-UP!" > $LOG.$i  
fi  
done  
sleep $SECONDS  
done


Oczywiście skrypty możemy dodać do Crona. W ten sposób mamy pewność, że będziemy informowani o problemach. Możemy również ograniczyć sprawdzenie maszyn do tych najważniejszych, np. serwerów z systemami ERP, DB, WWW itd.




Brak komentarzy:

Prześlij komentarz