Моніторинг мережі своїми руками

Про­дов­же­н­ня цьо­го запи­су.

Зро­бив так, щоб якщо хост від­ва­лив­ся, то спо­ві­ще­н­ня при­йшло тіль­ки один раз, а потім ще раз, коли хост під­ні­ме­ться.

#!/usr/bin/env bash
 
runfolder="/var/run/check_network"
lockfile="$runfolder/lock"
mkdir -p "$runfolder"
 
function host_is_alive()
{
	if [[ -f "$runfolder/dead_$1;$2" ]]
	then
		/usr/local/bin/jabber.php "admin@example.com" "ALERT: host $1 ($2) is alive"
		rm "$runfolder/dead_$1;$2"
	else
		true
	fi
}
 
function host_is_dead()
{
	if [[ -f "$runfolder/dead_$1;$2" ]]
	then
		true
	else
		/usr/local/bin/jabber.php "admin@example.com" "ALERT: host $1 ($2) is dead"
		touch "$runfolder/dead_$1;$2"
	fi
}
 
function checkhost()
{
	case "$3" in
		0)
			host_is_alive "$1" "$2"
			;;
		*)
			host_is_dead "$1" "$2"
			;;
	esac
}
 
 
hosts="\
	host-1;192.168.0.2;noskip \
	host-2;192.168.0.3;skip \
	host-3;192.168.0.4;noskip"
 
if [[ -f "$lockfile" ]]
then
	echo "Lockfile $lockfile exists"
	exit 1
fi
 
touch "$lockfile"
 
for host in $hosts
do
	hostname=`echo $host | cut -d ';' -f 1`
	hostip=`echo $host | cut -d ';' -f 2`
	hostskip=`echo $host | cut -d ';' -f 3`
	if [[ "$hostskip" == "noskip" ]]
	then
		ping -c 1 -q -W 1 $hostip >/dev/null 2>&1
		checkhost "$hostname" "$hostip" "$?"
	fi
done
 
rm -f "$lockfile"

Ну і PHP-скрипт для спо­ві­ще­н­ня по жаб­бе­ру:

#!/usr/bin/php -q
 
<?php
	include 'XMPPHP/XMPP.php';
 
	error_reporting(0);
 
	$jid = $argv[1];
	$message = $argv[2];
 
	$conn = new XMPPHP_XMPP('xmpp.example.com', 5222, 'guardian', 'password', 'resource', 'example.com', $printlog=false, $loglevel=XMPPHP_Log::LEVEL_VERBOSE);
 
	try {
		$conn->connect();
		$conn->processUntil('session_start');
		$conn->presence();
		$conn->message($jid, $message);
		$conn->disconnect();
	} catch(XMPPHP_Exception $e) {
		die($e->getMessage());
	}
?>

Для робо­ти потрі­бна оця бібліо­те­ка.

Мітки: , ,

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.