С \ n
в LHS вы попытались сопоставить символ новой строки вместо литерала \ n
.
Попробуйте:
sed -e 's/\([^\]\)\(\\n\)/\1\\\2/g' file
или короче с расширенным регулярным выражением:
sed -E 's/([^\])(\\n)/\1\\\2/g' file
Это можно сделать с помощью следующей awk
команды:
nmap -sP 192.168.3.0/24 \
| awk '/192.168.3/ && !/192.168.3.1$/{print $NF}'
Это указывает awk
на печать последнего поля совпадающей строки (s)
Возможно, даже более эффективное решение, использующее только 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
Нет необходимости сканировать всю подсеть, если вы знаете, что какая-то ее часть вас не интересует. (Избегание компьютера означает, что вам не нужно отбрасывать его результат.)
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-сервер не находится в вашей подсети? Иначе как ваш принтер получит свой динамический адрес?
Получив IP-адрес принтера, вы можете получить имя хоста с помощью nmblookup -A 'IP address'
. Это должно помочь в будущем, если IP-адрес изменится, поскольку вы будете запрашивать у сети машину с этим именем, а не пытаться найти машину по IP-адресу.