Скрипт для выявления включенных сетевых устройств в сети предприятия.

Для экономии электроэнергии на предприятии понадобилось выявлять тех сотрудников, которые не выключают свои компьютеры, уходя домой.
Немного погуглив был создан вот такой скрипт:

#!/bin/bash
#Скрипт сканирования сети на наличие включенных хостов. Выполняется раз в сутки в 23:30 каждый день.
# Определяем подсети предприятия
NET="192.168.0.0/24
192.168.1.0/24
192.168.2.0/24"
#Определяем папку хранения логов (результатов проверки)
LOG_DIR="/var/log/OSS_Enabled"
# Определяем имя файла лога в формате: ДД-ММ-ГГ_Ч:М:С.txt
LOG_FILE="$LOG_DIR/`date +%d-%m-%Y_%H:%M:%S`.txt"
echo "Вывод активных компьютеров " >> $LOG_FILE
echo "`date +%T` - Начало опроса компьютеров и сетевого оборудования" >> $LOG_FILE
for NET_c in $NET
do
echo "Сеть: $NET_c" >> $LOG_FILE
count=0
for ipadr in `nmap -sL -n $NET_c | grep Host| awk 'BEGIN{FS=" "}{print $2}'`
do
if [ "`nmap -p139 $ipadr |grep 'tcp'|grep -v 'filtered'`" != "$noarpin" ]; then
        echo "$ipadr - UP" >> $LOG_FILE
        count=$(($count+1))
fi
done
echo "Всего в подсети активно: $count едениц техники" >> $LOG_FILE
done
echo "`date +%T` - Конец опроса компьютеров и сетевого оборудования" >>$LOG_FILE

Скрипт выполняется достаточно долго, минут 5. Ибо NMAP работает не очень шустро.

Почему не подходит для этих задач ping — на некоторых серверах стоит блокировка ICMP пакетов, а значит при проверке ping, он будет считаться выключенным. Если кто-то подскажет как ускорить работу скрипта буду очень благодарен!
comments powered by HyperComments
Олег (SvM)
2012-08-20 00:21:54
arping?
Hellsman
2012-09-13 13:01:12
arping это хорошо, но проблема в том, что нужно найти вообще все ПК включенные в сеть (включая тех, чьи MAC-неизвестны), а также компы в удаленных офисах, связь с которыми идет через 6+ маршрутизаторов и обычные ICMP пакеты не проходят, выдавая ответы о пинге шлюза, а не тачки.