Как мне добавить новые данные в файл?

Как мне добавить новые данные в файл?

Итак! У меня есть сканирование nmap, которое сохраняет вывод в файл,nmapscan.txt:

sudo nmap -sP 192.168.1* > nmapscan.txt

У меня также есть несколько других команд для очистки и сохранения всех желаемых выходных данных в один файл,livehosts.txt:

cat ./temp/nmapscan.txt | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' > ./temp/macaddresses.txt

Который сохраняет mac-адреса. И:

grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' ./temp/nmapscan.txt > ./temp/ipaddresses.txt

Который сохраняет IP-адреса. И:

cat ./temp/nmapscan.txt | grep -o -P '(?<=for).*(?=.attlocal)' > ./temp/hostnames1.txt

Который сохраняет имена хостов. И:

cut -d' ' -f 2 ./temp/hostnames1.txt > ./temp/hostnames2.txt

Что я и сделал, чтобы очистить имена хостов (извините, забыл включить это в исходный пост)... И:

cut -d' ' -f 1 ./temp/hostnames2.txt | paste ./temp/macaddresses.txt ./temp/ipaddresses.txt - > ./temp/livehosts.txt

.. который является конечным продуктом, объединяющим желаемые данные и отображающим следующее:

xx:xx:xx:xx:xx:xx   192.168.1.1     Netgear
xx:xx:xx:xx:xx:xx   192.168.1.111   John's Toilet Cam

Я хочу сделать сканирование и написать снова, и хочу, чтобыlivehosts.txtфайл будет более или менее обновлен. Простое выполнение сканирования и повторной записи, как есть, записывает поверх файла. И не все устройства подключены в разное время.

Я пробовал:

>>

Но это просто удваивает объем данных, уже имеющихся в файле.

Будет ли лучшим способом сделать это: удвоить данные, удалить повторяющиеся данные и затем записать их в новый файл?

Как бы вы это сделали? Спасибо!

решение1

Слишком много ненужных манипуляций.

Прежде всего, используйте -oGопцию (grepable format). Это облегчит вам работу. Источник:Справочное руководство Nmap - Вывод. И нет необходимости делать перенаправление файла ( > nmapscan.txt), так как nmap уже имеет -oNопцию. Вы можете записывать в файл, но все равно иметь вывод на консоль.

Я не уверен, что ваша целевая спецификация вообще законна:

nmap -sP 192.168.1*

Возможно, nmapмне удалось правильно его интерпретировать, но насколько мне известно, это неверный синтаксис.

Вместо этого используйте 192.168.1.0/24или 192.168.1.1-255(предполагая, что вы хотите просканировать небольшую сеть с адресами от 192.168.1.0 до 192.168.1.255.

Видеть:Справочное руководство Nmap - Спецификация цели

Связанный контент