![]() |
Выбор скриптового языка
Потихоньку привык использовать в Windows сборники GNU-утилит для Windows: Cygwin и MinGW (MinGW нравится больше), можно использовать bash-скрипты как в линуксе.
Вопрос, если вам нужен в Windows скрипт по работе с текстом (допустим прочитать лог 'C:\Program Files\OpenVPN\log\openvpn.log', найти в нём строки содержащие слово "received" и вывести только IP-адреса содержащие с этих строках), то что вы используете: 1. установлю MinGW и использую bash-скрипт 2. напишу скрипт с использованием командлетов PowerShell 3. использую другой скриптовый язык |
Всё зависит от обстоятельств и личных предпочтений. Конкретно по заданию: пример входящего файла
Код:
received from "88.83.177.54" blah-blah-blah Код:
(sls received openvpn.txt).line -split '[\s''"]').where{$_ -as [ipaddress]} |
Для сравнения, прочие решения.
Код:
# perl |
В MinGW есть и grep, и bash, и sed, и awk, и все GNU-утилиты, привычные каждому линуксоиду, но уже в Windows.
В условии было вывести только IP-адреса, то есть если в логе записано: Код:
2024-11-15 08:48:09 88.83.177.54:51414 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, peer certificate: 2048 bit RSA, signature: RSA-SHA256 Код:
# cat /c/Program\ Files/OpenVPN/log/openvpn.log | awk '$0~"Peer Connection Initiated" {print $3}' |
Цитата:
Код:
(sls '(?<=Connection.+:.+:).+$' file.txt).Matches.Value |
Если нужно первое вхождение, то:
Код:
(sls 'Connection' file.txt).foreach{$_.Line.Split()[2]} |
Время: 11:06. |
Время: 11:06.
© OSzone.net 2001-