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