Извлечение диапазона сети и su bnet интерфейса с машины Linux - PullRequest
1 голос
/ 08 января 2020
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:80:00:06 brd ff:ff:ff:ff:ff:ff
    inet 10.128.0.6/32 brd 10.128.0.6 scope global noprefixroute dynamic eth0
       valid_lft 2327sec preferred_lft 2327sec
    inet6 fe80::4001:aff:fe80:6/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Я попробовал команду ниже, но я хотел бы заменить последний октет на "0"

ip a | grep ": eth0" -A 2 |  grep inet | awk '{print $2}'
10.128.0.6/32

ожидаемый вывод

10.128.0.0 / 32

Примечание: - ip-адрес последнего октета больше, чем один ди git, например, последний октет может иметь как минимум один ди git и максимум три

10.128.0.6
10.128.0.16
10.128.0.116

, поэтому в основном нам нужно заменить «0» на строку между «\»

Ответы [ 2 ]

1 голос
/ 08 января 2020

Вот так, чтобы просто извлечь ip:

ip -o a | grep -oP "eth0\s+inet\s+\K\d+\.\d+\.\d+\.\d+/\d+"

Как и при полных требованиях:

ip -o a |
  perl -lne 'print "${1}0${2}" if m!enp0s31f6\s+inet\s+(\d+\.\d+\.\d+\.)\d+(/\d+)!'
1 голос
/ 08 января 2020

Не могли бы вы попробовать следующее (поскольку для команды ip a, упомянутой OP, нет примеров, поэтому не удалось ее проверить).

РЕДАКТИРОВАТЬ: В соответствии с запросом OP добавляется одна форма решения, которая также сохраняет значение в переменной:

value=$(ip a | awk '/: eth0/{found=1} found && /inet/ && !count{match($2,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+/);val=substr($2,RSTART,RLENGTH);sub(/[0-9]+\//,"0/",$2);print substr($2,RSTART,RLENGTH);count=1}')

Вывод будет следующим:

10.128.0.0/32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...