Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Парсинг логов с конца и резолвинг того что получилось

Ответить
Настройки темы
PowerShell - [решено] Парсинг логов с конца и резолвинг того что получилось

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Есть изрядная пачка логов (все в одной папке, у всех расширение txt, кроме этих логов больше ничего в папке нету) в одной из последних десяти строк каждого лога есть IP (в какой именно из этих десяти неизвестно, первые два октета во всех логах одинаковые, кроме IP в этой строке может быть разве что несколько пробелов). Вообще можно и все логи и целиком читать, но они здоровые весьма, и IP могут встречаться и ранее, а нужно именно последнее значение.
Нужно выдернуть IP и положить в новый общий лог (например, IP.log) вместе с именем старого лога. Как-то так
Код: Выделить весь код
192.168.1.1 log1
192.168.1.2 log2
Еще нужно спросить у DNS'a все ли нормально отрезолвилось, и те IP, для которых DNS имени не вернул сложить в отдельный лог (например nonameIP.log).
Вроде все описал, если что уточнить нужно - пишите.

Отправлено: 18:03, 05-04-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Elven, конечно, поможет.

1. Я вот, например, вижу по логу, что вопреки сказанному:
Скрытый текст
Цитата Elven:
в одной из последних десяти строк »
Цитата Iska:
…и только в одной? »
Цитата Elven:
Iska, только в одной из. »

наличествует несколько IP.

2. Позволяет наглядно понять, что работать с ним как с реляционной базой данных (Log Parser, OLEDB Text Driver) не получится.

Отправлено: 16:43, 06-04-2018 | #11



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Собственно, помимо наколеночных скриптов есть два, на мой взгляд, более правильных пути:
1) Организовать отчёты той софтиной, что генерирует эти логи, если она сама не наколеночная.
2) Поднять какой-нибудь Zabbix, чтобы он смотрел в эти логи и выдавал предупреждения и слал письма в случае обнаружения заданного паттерна.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:50, 06-04-2018 | #12


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


DJ Mogarych, наколенная, писаная хз когда и кем, так что концов не собрать. Zabbix и так есть, но о том, что должно получаться нет нужности слать письма, нужно просто формировать отчет периодически по требованию (от нескольких раз в неделю до раза в полгода).
Iska, IP который нужен начинается на 10.47. и он - один. При указании этого всего я несколько некорректно выразился, нужный IP - один, и первые два октета у него всегда одни и те же.

Собственно первая часть выполнена, за основу взял то, что предложил Kazun.

Код: Выделить весь код
dir *.txt | Foreach {
	$Name = $_.BaseName
	(gc $_.FullName -Tail 10).split() -match "10.47.\d{1,3}\.\d{1,3}" | foreach {"{0}`t{1}" -f $_,$Name}
}
Осталось то что получилось прогнать через Resolve-DnsName, однако для решения этой проблемы мне нужен только аналог && и || в cmd/bat для PowerShell.

Последний раз редактировалось Elven, 09-04-2018 в 11:06.


Отправлено: 10:59, 09-04-2018 | #13


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Получилось как-то так. Может и писано и криво, но работает, меня устраивает.
Код: Выделить весь код
$datetime = Get-Date -Format yyyyMMdd_HHMMss
dir *.txt | Foreach {
	$Name = $_.BaseName
	(gc $_.FullName -Tail 10).split() -match "10.47.\d{1,3}\.\d{1,3}" | foreach {
        "{0}`t{1}" -f $_,$Name | Format-List | Out-File "e:\$datetime IP.txt" -Append
        Resolve-DnsName $_ >$null
        if ($? -eq "False") {$_ | Format-List | Out-File "e:\$datetime noresolvIP.txt" -Append}
        }
}

Отправлено: 12:06, 09-04-2018 | #14


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Elven:
Iska, IP который нужен начинается на 10.47. и он - один. При указании этого всего я несколько некорректно выразился, нужный IP - один, и первые два октета у него всегда одни и те же. »
Elven, тогда другое дело .

Отправлено: 16:23, 09-04-2018 | #15



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Парсинг логов с конца и резолвинг того что получилось

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Комп выключается из-за того, что мало ОЗУ. secret99@vk Microsoft Windows 7 18 07-01-2016 10:35
[решено] Подскажите причины того, что монитор не отображает картинку? carloslinux Видеокарты 13 13-03-2013 23:06
DNS/DHCP - DNS резолвинг Denis_ Сетевые технологии 10 29-11-2011 12:47
как сделать скриншот того, что не умещается на экран? illusionmgs Хочу все знать 10 06-04-2010 11:47
XP выключается вместо того что перезагружаться !!! Konect Microsoft Windows 2000/XP 10 27-01-2004 06:19




 
Переход