모든 이더넷 인터페이스 찾기 및 IP 주소 연결

모든 이더넷 인터페이스 찾기 및 IP 주소 연결

아래와 같이 모든 인터페이스를 가져오고 IP 주소를 연결하는 방법

[root@centso ]# ifconfig
enp3s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet addr:10.5.2.10  Bcast:10.5.7.255  Mask:255.255.248.0
        inet6 fe80::e611:5bff:feea:5e50  prefixlen 64  scopeid 0x20<link>
        ether e4:11:5b:ea:5e:50  txqueuelen 1000  (Ethernet)
        RX packets 638000416  bytes 763371981799 (710.9 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16607280  bytes 9787019600 (9.1 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp3s0f1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether e4:11:5b:ea:5e:52  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0f0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether e4:11:5b:ea:5e:44  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0f1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether e4:11:5b:ea:5e:46  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 45015  bytes 4371658 (4.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 45015  bytes 4371658 (4.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

나는 아래와 같은 출력을 원합니다. 또한 이 작업을 수행할 수 있는 명령 ip link이나 무언가가 있다고 생각하지만 기억할 수 없으며 일부 컴퓨터에는 다른 네트워크 카드 이름이 있습니다. 예를 들어 enoX또는ethX

enp3s0f0: 10.5.2.10
enp3s0f1:
enp4s0f0:
enp4s0f1:

답변1

나는 뭔가를 발견했다고 생각하며 더 똑똑한 방법이 분명 있을 것이라고 확신하지만 지금은 준비가 되었습니다.

[root@server1 ~]# ip -o -4 addr show | awk '{print $1" " $2": "$4}'
1: lo: 127.0.0.1/8
2: eno1: 192.168.100.190/24
3: eno2: 10.5.8.33/21

답변2

이 시도:

ip addr show | awk -F '[: ]+' '
    /^[^ ]/      { iface=$2 }               # Start of section, we memorize the interface name
    $2 == "inet" { print iface ": " $3 }    # IPv4 address => print the line
'

답변3

예가 있습니다:

ip address show | awk '/inet / {split($2,var,"/*"); print $7,":",var[1]}'

출력은 다음과 같아야 합니다.

 : 127.0.0.1
enp3s0f0: 10.5.2.10
enp3s0f1: .......
enp4s0f0: .......
enp4s0f1: .......

답변4

이 명령은 모든 인터페이스와 해당 IP 주소를 공백으로 구분하여 한 줄에 표시합니다.

ip r|grep " src "|cut -d " " -f 3,12 | xargs

인용하다:https://stackoverflow.com/questions/38041163/display-only-network-interface-and-ip-address-using-ifconfig-and-awk

관련 정보