Необходимо получить конкретный блок данных из отчета о сканировании

Я выполнил сканирование nmap в большой сети, и теперь я пытаюсь упорядочить данные.

Отчет, который я имею, является результатом:

nmap -A -p 0-65535 -iL [filename] -oX [filename]

Итак, что я пытаюсь сделать сейчас, это извлечь результаты для каждого IP-адреса, который я сканировал. Я нашел другой пост здесь, где решение было использовать awk:

awk 'BEGIN {RS="< host ";} /^starttime/ {print RS $0;}' [filename]

Это не сработало для меня, потому что вместо остановки после первого блока оно проходило прямо через отчет. Конечно, я понимаю, что это связано с тем, что "

Можно ли в любом случае запустить отчет nmap, извлечь отчет о проверке для каждого IP-адреса и сохранить его в отдельном файле? Конечно, для этого потребуется цикл For... после того, как будет извлечено и записано в файл одного блока, его можно расширить с помощью цикла for (я думаю)...

Или у кого-то, исходя из опыта или просто вдохновения, есть более изысканное решение / предложение?

Любая помощь в этом вопросе будет принята с благодарностью.

1 ответ

Не использовать awk проанализировать данные XML. Формат вывода Nmap XML хорошо документирован, и для него есть парсеры в Python ( Ndiff также устанавливается как библиотека Python 2 и имеет встроенный парсер), Ruby, Perl, или вы можете использовать несколько парсеров XML командной строки,

Другие вопросы по тегам