Удаляем старые ненужные DHCP-резервации IP-адресов

в 4:07, , рубрики: dhcp, Чулан, метки:

Иногда в крупных организациях нужно провести ревизию свободных IP-адресов. Пользователи приезжают на место/уезжают/увольняются, IP адреса остаются зарезервированны хотя за ними уже никого нет. Поиском таких «мертвых душ» и займемся.

Рассмотрим пример, как получаются отчеты из логов MS DHCP.

Технология формирования отчетов по использованию адресного пространства состоит из двух частей:

1) отделение событий DHCP renew и

2) SQL-обработка.

В папке \dhcp_serverc$WindowsSystem32dhcp лежат логи DHCP-сервера. Их копии нужно собрать в одну папку на локальном или сетевом диске. Например, в c:tmp

Из этих файлов можно вытащить все события обновления dhcp lease renew:

cmd

C:

cd c:tmp

1) На первой стадии выделяем значимые строки. Перечислите через запятую все имена файлов *.log, которые нужно обработать. Можно собрать файлы за несколько недель, переименовав их как-нибудь.

c:tmp>for /f "tokens=1,2,3,4,5,6,7,8 delims=," %a in (DhcpSrvLog-Mon.log,DhcpSrvLog-Tue.log,DhcpSrvLog-Wed.log,DhcpSrvLog-Thu.log,DhcpSrvLog-Fri.log,DhcpSrvLog-Sat.log,DhcpSrvLog-Sun.log) do if [%e] NEQ [] echo %b,%c,%d,%e,%f,%g >> text.csv

2) Добавить в первую строчку файла text2.csv заголовок «Date,Time,Description,IP,Hostname,MAC», остальные строки заполнить событиями renew:

c:tmp>echo Date,Time,Description,IP,Hostname,MAC >> text2.csv

c:tmp>for /f "tokens=1,2,3,4,5,6 delims=," %a in (text.csv) do if "%c" EQU "Renew" echo %a,%b,%c,%d,%e,%f >> text2.csv

Можно хранить text2.csv за каждую неделю и собирать в один файл конкатенацией. Если, допустим, нужно проверить что адрес не использовался целый месяц, полгода и т.д, то нужно хранить файлы text2.csv за этот период и склеивать перед следующей операцией.

3) формирование отчета:

c:tmp >"c:Program Files (x86)Log Parser 2.2LogParser.exe" -i:csv -o:TPL -tpl:dhcp2.tpl "SELECT IP, hostname, mac, max(to_timestamp(add(add(Date, ' '),time), 'MM/dd/yy HH:mm:ss')) as timestamp, EXTRACT_TOKEN(ip, 0, '.') as octet1, EXTRACT_TOKEN(ip, 1, '.') as octet2, EXTRACT_TOKEN(ip, 2, '.') as octet3, EXTRACT_TOKEN(ip, 3, '.') as octet4, add(strrepeat('0',sub(3, to_int(strlen(octet4)))),octet4) as octet4lz, add(strrepeat('0',sub(3, to_int(strlen(octet3)))),octet3) as octet3lz INTO text2.html FROM text2.csv group by IP,mac,hostname order by octet1,octet2,octet3lz,octet4lz"

Получится файл text2.html, в котором можно увидеть «живые» компьютеры, получающие адреса через DHCP.

Если заменить "-o:TPL -tpl:dhcp2.tpl " на "-o:CSV", «text2.html» на «b8.csv», то выходной файл можно импортировать в excel.

"c:Program Files (x86)Log Parser 2.2LogParser.exe" -i:csv -o:CSV "SELECT IP, hostname, mac, max(to_timestamp(add(add(Date, ' '),time), 'MM/dd/yy HH:mm:ss')) as timestamp, EXTRACT_TOKEN(ip, 0, '.') as octet1, EXTRACT_TOKEN(ip, 1, '.') as octet2, EXTRACT_TOKEN(ip, 2, '.') as octet3, EXTRACT_TOKEN(ip, 3, '.') as octet4, add(strrepeat('0',sub(3, to_int(strlen(octet4)))),octet4) as octet4lz, add(strrepeat('0',sub(3, to_int(strlen(octet3)))),octet3) as octet3lz INTO b8.csv FROM text2.csv group by IP,mac,hostname order by octet1,octet2,octet3lz,octet4lz"

LogParser качать тут:

www.microsoft.com/en-us/download/details.aspx?id=24659

Автор: Flexo

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js