Я пытаюсь написать сценарий bash, который будет считывать ряд IP-адресов в TXT-файле и будет выполнять nmap-сканирование на каждом отдельном ip с помощью сценария NSE (smb-os-discovery
) с этим. Из этого вывода я хотел бы напечатать только определенные строки, но только если один из них соответствует определенному шаблону.grep nmap output, условно распечатать выделенные строки
Я пробовал несколько разных опций, но просто не могу заставить его работать так, как я хочу, учитывая, что два элемента, которые я хочу проверить и выводить, находятся в двух разных строках. Ближайшим мне удалось получить, написав был ниже Баш скрипт:
#!/bin/bash
for server in $(cat servers-smb.txt); do
nmap --script smb-os-discovery $server | grep "report\|OS: Windows"
done
При выполнении этого скрипта на выходе имеет серверы под управлением Windows, но и report
линию для тех, которые этого не делают, что, как ожидается, поскольку выражение grep содержит оператор OR.
Любая помощь с этим была бы высоко оценена.
Если ваша основная проблема заключается в том, чтобы выработать лучшее выражение 'grep', отправьте примерный вывод из вашей команды' nmap', с которой мы можем работать. –