Shell - получить имя интерфейса IP-адреса - PullRequest
1 голос
/ 08 мая 2020

Есть ли способ запросить имя интерфейса и IP-адрес на Linux (GNU)? Наоборот, это кажется простым, но мне нужно как раз наоборот, так как у меня только один IP-адрес в качестве входных данных, который назначается одному из многих интерфейсов моей системы. Как мне узнать, к какому интерфейсу принадлежит входной IP-адрес? IP-адрес

Заранее спасибо

1 Ответ

1 голос
/ 08 мая 2020

Вы можете проанализировать вывод ip addr, используя, например, awk, чтобы найти имя интерфейса с определенным IP-адресом. Например:

ip addr | awk -vtarget_addr=192.168.1.200 '
/^[0-9]+/ {
  iface=substr($2, 0, length($2)-1)
}

$1 == "inet" {
  split($2, addr, "/")
  if (addr[1] == target_addr) {
    print iface
  } 
}
'

Это ищите интерфейс с адресом 192.168.1.200. В моей системе это будет напечатать:

vlan100

Потому что:

$ ip addr show vlan100
5: vlan100: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 56:ba:dc:0f:73:69 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.200/32 brd 192.168.1.200 scope global noprefixroute vlan100
       valid_lft forever preferred_lft forever
    inet 192.168.1.169/24 brd 192.168.1.255 scope global dynamic noprefixroute vlan100
       valid_lft 47960sec preferred_lft 47960sec
    inet6 fe80::acb6:be79:224e:3062/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...