Иногда в крупных организациях нужно провести ревизию свободных 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