[英]Shell - Get interface name of IP address
有沒有辦法在 Linux (GNU) 上查詢接口名稱和 IP 地址? 反之亦然,這似乎很簡單,但我完全需要它,因為我只有一個 IP 地址作為輸入,該地址分配給我系統的許多接口之一。 如何查出輸入的IP地址屬於哪個接口?
想象一下你有一個這樣的腳本:
ips=($(hostname -I))
PS3='Please select a network the master should listen onto: '
ips=($(hostname -I))
ips=("${ips[@]}" 'Quit')
select ip in "${ips[@]}"; do
case $ip in
*[0-9]*)
break
;;
Quit) echo quit
break;;
*) echo Invalid option >&2;;
esac
done
echo "IP: $ip has been choosen for enrollment"
而現在想知道選擇的ip地址的接口名稱
提前致謝
您可以使用例如awk
來解析ip addr
的 output 以找到具有特定 Z957B527B527BCZE9 地址的接口名稱。 例如:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.