nmap для awk to sed. есть ли способ лучше?

С \ n в LHS вы попытались сопоставить символ новой строки вместо литерала \ n .

Попробуйте:

sed -e 's/\([^\]\)\(\\n\)/\1\\\2/g' file

или короче с расширенным регулярным выражением:

sed -E 's/([^\])(\\n)/\1\\\2/g' file
4
12.04.2018, 16:26
4 ответа

Это можно сделать с помощью следующей awkкоманды:

nmap -sP 192.168.3.0/24 \
  | awk '/192.168.3/ && !/192.168.3.1$/{print $NF}'

Это указывает awkна печать последнего поля совпадающей строки (s)

11
27.01.2020, 20:44

Возможно, даже более эффективное решение, использующее только grep(, требует GNU grep или grep, поддерживающего регулярное выражение perl):

nmap -sP 192.168.3.0/24 \
  | grep -o -P '192.168.3.(?!1$)[0-9]+'

Это greping для -o (только )IP-адрес, соответствующий любому IP-адресу, начинающемуся с 192.168.3, кроме192.168.3.1

3
27.01.2020, 20:44

Нет необходимости сканировать всю подсеть, если вы знаете, что какая-то ее часть вас не интересует. (Избегание компьютера означает, что вам не нужно отбрасывать его результат.)

nmap -oG - -sn 192.168.3.2-254 | awk '$NF=="Up" {print $2}'

или если вы предпочитаете использовать вывод XML вместо вывода grep

nmap -oX - -sP 192.168.3.2-254 | xmlstarlet sel -t -m '//address[@addrtype="ipv4"]' -v '@addr' -n

Используйте -sPвместо более новой версии -sn, если это требуется для вашей версии nmap.


Между прочим, хотя ваши системные администраторы могут захотеть, чтобы ваш принтер был подключен к DHCP, мало причин, по которым они не могут организовать для него известный неизменный адрес. (Я делаю это для принтеров в своих сетях, чтобы программное обеспечение принтера не беспокоилось о неожиданном изменении IP-адресов. )Иногда его называют «липким» адресом, чтобы отличить его от статического (не -адреса DHCP )или псевдо-случайного динамического (адреса DHCP ).

Вы уверены, что DHCP-сервер не находится в вашей подсети? Иначе как ваш принтер получит свой динамический адрес?

8
27.01.2020, 20:44

Получив IP-адрес принтера, вы можете получить имя хоста с помощью nmblookup -A 'IP address'. Это должно помочь в будущем, если IP-адрес изменится, поскольку вы будете запрашивать у сети машину с этим именем, а не пытаться найти машину по IP-адресу.

0
27.01.2020, 20:44

Теги

Похожие вопросы