Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   grep для PowerShell? (http://forum.oszone.net/showthread.php?t=353772)

ts1000win 30-06-2023 02:29 3011270

grep для PowerShell?
 
В linux записываю результат выполнения nmap в файл списком ip:
Код:

nmap -p 3389 --proxy --open -sV 171.98.128.0/17 | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq > /home/kali/Inetcom2.txt
Windows версия grep в таком случае демонстрирует ошибку. Как написать для PowerShell?

DJ Mogarych 30-06-2023 08:30 3011276

Код:

(nmap -p 3389 --proxy --open -sV 171.98.128.0/17) -match '([0-9]{1,3}\.){3}[0-9]{1,3}' |sort -Unique > /home/kali/Inetcom2.txt

Sham 30-06-2023 09:18 3011282

А они установлены вообще grep, uniq и sort (.exe)? Если например установлен git или msys, то там есть эти утилиты, и надо папку с ними добавить в PATH. Тут подлянка от PS - куча алиасов замены, например sort, поэтому сразу лучше указывать .exe.

DJ Mogarych 30-06-2023 14:51 3011302

В современном виндоузе есть как алиас для Invoke-WebRequest (вызывается командой curl), так и сам curl (вызывается командой curl.exe).

ts1000win 01-07-2023 01:03 3011332

Цитата:

Цитата DJ Mogarych
-match »

Такой параметр отсутствует, windows10.

Serguei Kouzmine 01-07-2023 06:36 3011335

у вас повершелл более старый

попробуйте

Код:

write-output '127.0.0.1' | select-string  -pattern '([0-9]{1,3}\.){3}[0-9]{1,3}'
Код:

127.0.0.1
ну и
Код:

get-help select-string
там придется оперировать выражениями типа

Код:

$result.Matches.Groups[2].Captures.Value

YuS_2 01-07-2023 12:01 3011343

Цитата:

Цитата ts1000win
Такой параметр отсутствует, windows10. »

А можно скриншот увидеть этого чуда? :)
Так чтобы в консоли было видно целиком команду и вывод.

Цитата:

Цитата Serguei Kouzmine
у вас повершелл более старый »

Это же насколько он старым должен быть? :)
оператор "-match" в powershell живет от рождения...

Serguei Kouzmine 01-07-2023 18:52 3011356

Цитата:

Цитата YuS_2
живет от рождения... »

действительно причина не в возрасте повершелла
предположу наверное у @ts1000win возникли проблемы с редактированием сложных команд - пайп помогает с этим

ts1000win 02-07-2023 23:07 3011416


Serguei Kouzmine 03-07-2023 01:33 3011424

вам же уже объясняли в другом топике ts1000win, что

надо агрументы передавать правильно например

Код:

start-process -filepath "c:\Program Files\Git\bin\git.exe" -argumentlist "--version","2>&1" -RedirectStandardOutput a.txt  -WindowStyle hidden
Код:

dir a.txt
Код:

Mode                LastWriteTime        Length Name
----                -------------        ------ ----
-a----        7/2/2023  6:32 PM            29 a.txt

Код:

get-content a.txt
Код:

git version 2.30.0.windows.2

YuS_2 03-07-2023 09:30 3011438

ts1000win, да, понятно, спасибо.
Это просто неверное использование оператора, т.е. Вы использовали оператор в качестве параметра командлета Start-Process, на что вполне резонно, выдано соответствующее сообщение.

ts1000win 04-07-2023 21:22 3011552

Вложений: 1
Но использовать -match все равно не получается:
Код:

start-process -filepath 'C:\Program Files (x86)\Nmap\nmap' -argumentlist '-p 3389 --open -sV 77.40.0.0/17' -match '([0-9]{1,3}\.){3}[0-9]{1,3}','2>&1' -RedirectStandardOutput 'C:\Users\Administrator\Documents\p2.txt' -WindowStyle 'hidden'

Так тоже нет:
Код:

start-process -filepath 'C:\Program Files (x86)\Nmap\nmap' -argumentlist '-p 3389 --open -sV 77.40.0.0/17' | start-process -filepath 'C:\Program Files (x86)\GnuWin32\bin\grep' -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}','2>&1' -RedirectStandardOutput 'C:\Users\Administrator\Documents\p2.txt' -WindowStyle 'hidden'

Serguei Kouzmine 05-07-2023 00:07 3011561

потому что надо читать документацию и узнать что match
это не флаг start-process а оператор типа string (вероятно реализован через методы расширения)
а argumenlist нoоaборт это флаг
кстати лоджен предупредить отстримить инпут в start-process наверное не выйдет никак
скажите плохо наверное тому живется кого в гугле забанили ?

YuS_2 05-07-2023 12:24 3011579

ts1000win, Вы бы озвучили свою задачу, а то решаете её в режиме "XY" ... просто напишите, что в итоге желаете получить.
1. Почему Вы пытаетесь выполнить nmap в отдельном процессе? Так у Вас ничего не выйдет, если желаете создать выборку строк из текстового выхлопа команды.
2. Чем Вас не устроил первый ответ? Вы его вообще проверяли?
3. Пробуйте так:
Код:

nmap -sn scanme.nmap.org 2>&1|?{$_ -match '([0-9]{1,3}\.){3}[0-9]{1,3}'}|sort -uni
а дальше, по конвейеру - хоть вывод в консоль, хоть вывод в файл... в зависимости от того, что требуется...

ts1000win 05-07-2023 23:23 3011630

Использовать nmap скрывая значек powershell с панели задач.
Результат записать в файл списком ip.
Так тоже не получилось:
Код:

Start-Process -filepath 'C:\Program Files (x86)\Nmap\nmap' '-p 3389 --open -sV 77.40.0.0/17' 2>&1|?{$_ -match '([0-9]{1,3}\.){3}[0-9]{1,3}'}|sort -uni > 'C:\Users\Administrator\Documents\test.txt' -WindowStyle 'hidden'
Пишет:
Код:

cannot be found that matches parameter name 'WindowStyle'

YuS_2 06-07-2023 09:05 3011635

Цитата:

Цитата ts1000win
Так тоже не получилось »

Вам бы поизучать powershell подробнее... что такое командлет, конвейер и их использование... а так у Вас вообще непонятно, что записано в строке...
Все параметры командлета пишутся ДО конвейера, а у Вас параметр "-WindowStyle 'hidden'" командлета Start-Process, указан в конце строки, после перенаправления потока вывода в файл... естественно, будет вызвано исключение.

Цитата:

Цитата ts1000win
Использовать nmap скрывая значек powershell с панели задач. »

насколько я помню, всё равно, консольное окно будет мелькать, даже при скрытом запуске... для полного скрытия можно воспользоваться, например, скриптом VBS...
Ну, а так, чтобы выполнить команды в скрытом виде, для Вашей задачи, надо запускать так:
Код:

powershell -window Hidden -f ".\script.ps1"
а в самом файле-скрипте (файл лучше записывать в кодировке UTF8 с BOM), уже указывать то, что требуется:
script.ps1:
Код:

nmap -p 3389 --open -sV 77.40.0.0/17 2>&1|?{$_ -match '([0-9]{1,3}\.){3}[0-9]{1,3}'}|
sort -uni|out-file 'C:\Users\Administrator\Documents\test.txt' -enc 'utf8'


Pavel Nagaev 06-07-2023 09:24 3011637

А вообще вызывать внешние модули, потом парсить вывод PowerShell вообще идея не очень, может посмотрите модуль nmap под PowerShell?

https://github.com/JustinGrote/PoshNmap

Да и вот ещё неплохая статья Windows PowerShell built-in port scanner use

ts1000win 07-07-2023 02:06 3011727

Да, так получилось сохранить результат
Цитата:

Цитата YuS_2
Код:

powershell -window Hidden -f ".\script.ps1" »

Цитата:

Цитата YuS_2
Код:

nmap -p 3389 --open -sV 77.40.0.0/17 2>&1|?{$_ -match '([0-9]{1,3}\.){3}[0-9]{1,3}'}|
sort -uni|out-file 'C:\Users\Administrator\Documents\test.txt' -enc 'utf8' »


Но в формате:
Код:

Nmap scan report for 112.59.pppoe.mari-el.ru (77.40.59.112)
Nmap scan report for 125.86.pppoe.mari-el.ru (77.40.86.125)

В линукс:
Код:

nmap -p 3389 --proxy --open -sV 171.98.128.0/17 | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq > /home/kali/Inetcom2.txt
Сохранял список ip:
Код:

77.40.59.112
77.40.86.125


YuS_2 07-07-2023 09:11 3011749

Цитата:

Цитата ts1000win
Сохранял список ip: »

Код:

(nmap -p 3389 --open -sV 77.40.0.0/17 2>&1|sls  -patt '([0-9]{1,3}\.){3}[0-9]{1,3}').matches.value|
 sort -uni|out-file 'C:\Users\Administrator\Documents\test.txt' -enc 'utf8'



Время: 20:37.

Время: 20:37.
© OSzone.net 2001-