nmap, форматирование вывода

требуется просканить сеть на определённые порты и получить вывод вида ip порт1 порт2 порт3
сканирую как:
nmap -r -p80,81,90,443,2220,8002,8080 --open -oG - 192.168.0.1/18 | grep Ports

получаю такой список
Host: 192.168.1.37 ()	Ports: 80/open/tcp//http///	Ignored State: filtered (6)
Host: 192.168.5.49 ()	Ports: 80/open/tcp//http///, 443/open/tcp//https///	Ignored State: filtered (5)
Host: 192.168.12.88 ()	Ports: 80/open/tcp//http///, 8080/open/tcp//http-proxy///	Ignored State: closed (5)
Host: 192.168.12.90 ()	Ports: 80/open/tcp//http///	Ignored State: closed (6)
Host: 192.168.15.1 ()	Ports: 80/open/tcp//http///, 81/open/tcp//hosts2-ns///	Ignored State: closed (5)
Host: 192.168.19.10 ()	Ports: 80/open/tcp//http///, 443/open/tcp//https///, 8080/open/tcp//http-proxy///	Ignored State: closed (4)
Host: 192.168.22.207 ()	Ports: 80/open/tcp//http///, 443/open/tcp//https///	Ignored State: closed (5)
Host: 192.168.22.234 ()	Ports: 80/open/tcp//http///	Ignored State: filtered (6)
Host: 192.168.22.244 ()	Ports: 80/open/tcp//http///, 443/open/tcp//https///	Ignored State: filtered (5)

хочу же получить вывод вида
192.168.1.37 80
192.168.5.49 80 443
192.168.12.80 80 8080
192.168.12.90 80 
192.168.15.1 80 81
192.168.19.10 80 443 8080
192.168.22.207 80 443
192.168.22.234 80 
192.168.22.244 80 443

есть у кого идеи как с awk или ещё чем привести к такому виду и что-бы это не зависело от количества портов?
nmap -r -p121 10.10.10.50 --open -oG - | grep Ports | awk '{print ($2" "$5)}' | sed 's/\//''/g' | sed s/opentcp/''/g | sed s/openudp/''/g
10.10.10.50 121
сходу, хотя пока мне чегото не нравится, нужно время чтобы понять что.. -))
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
дело в том, что позиции не нормированы, по сути нужно только числа выдернуть, подозреваю о существовании подобной регулярки, но не более подозрений )
grayich
дело в том, что позиции не нормированы, по сути нужно только числа выдернуть, подозреваю о существовании подобной регулярки, но не более подозрений )
имхо, нужно только мой вариант пропустить через цикл и отформатировать выхлоп, тут нада подождать скриптописаку. а по мне так велосипед, мне и nmap -r dst хватает.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
sleepycat
имхо, нужно только мой вариант пропустить через цикл и отформатировать выхлоп
твой скрипт можно записать в форме
nmap -r 10.10.10.50 --open -oG - | tr '/' ' ' | awk '/Ports/{print $2,$5}'
но он только первый порт выводит, обрезая остальные, а нужно все, сколькоб их не было, в этом и сложность

возможно есть способ сформировать нужный вывод nmap, но я пока не знаю как
не знаю, как в строке.. я бы скрипт бы бомбанул, который бы принимал в 1 переменной хосты а во второй порты, отдавал бы nmap-у и парсил бы вывод.
Да твой вариант мне нравится больше, както это филигранней выглядит, поставить тупо пробелы, чтобы просто awk забрал, спасибо, позновательно.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
у nmap есть свои скрипты, NSE, только я никак в них не въеду, как сделать нужное мне :)
ещё вариант в xml выхлоп давать, но это уже тяжеловато, как-то громоздко выходит :)
grayich
у nmap есть свои скрипты, NSE, только я никак в них не въеду, как сделать нужное мне :)
ещё вариант в xml выхлоп давать, но это уже тяжеловато, как-то громоздко выходит :)
к сожалению пожму плечами. Ибо тут полностью с Вами солидарен. Линукс конечно радует тем, что можно что-то сделать тремя способами, гденито крипт накатаь изза лени каждый раз повторять несколько команд и т.д. Но тут и в правду получается какойто фронтэнд , а не просто надстроечка для себя. ))
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
 
Зарегистрироваться или войдите чтобы оставить сообщение.