IP 주소 및 인터페이스 이름 인쇄

IP 주소 및 인터페이스 이름 인쇄

아래와 같이 IP 주소를 표시하고 싶습니다.

lo : 127.0.0.1 
eth0 : 192.168.5.123
eth1 : 192.172.0.212
wlan0 : 10.1.0.124

모든 IP 주소를 인쇄할 수 있습니다 ifconfig | awk '/inet addr/{print substr($2,6)}'. 하지만 IP만 인쇄합니다. 각 시스템에는 고유한 인터페이스 이름과 주소가 있습니다. 따라서 내 스크립트는 IP 주소와 관련된 인터페이스를 표시해야 합니다.

답변1

다음은 원하는 작업을 수행합니다.

$ ip addr | awk '
/^[0-9]+:/ { 
  sub(/:/,"",$2); iface=$2 } 
/^[[:space:]]*inet / { 
  split($2, a, "/")
  print iface" : "a[1] 
}'
lo : 127.0.0.1
br0 : 10.1.10.12

답변2

ip -o addr | awk '{split($4, a, "/"); print $2" : "a[1]}'

또는 지역 주소에 관심이 없는 경우:

ip -o addr show scope global | awk '{split($4, a, "/"); print $2" : "a[1]}'

답변3

이 시도:

ip -o a show | cut -d ' ' -f 2,7

127.0.0.1/8

보세요::1/128

enp0s31f6 10.35.4.166/23

enp0s31f6 2620:52:0:2304:367:c01c:fe74:22ed/64

enp0s31f6 fe80::9a54:7adb:839e:fdb6/64

wlp58s0 10.201.132.132/22

wlp58s0 fe80::fa34:41ff:feb3:a06/64

virbr0 192.168.122.1/24

도커0 172.17.0.1/16

답변4

IPv4 주소의 경우에만 다음을 사용하십시오.

ip -o addr | awk '{split($4, a, "/"); print $2" : "a[1]}' | grep -v '::'

승인된 답변이 .bashrc 파일에 별칭으로 붙여넣는 것이 불편했기 때문에 이것을 생각해냈습니다.

매번 이렇게 긴 명령을 입력하는 것은 매우 힘든 작업입니다.

그래서 bashrc 파일에 별칭을 만들었습니다.

sudo nano ~/.bashrc

파일 끝에 이 줄을 추가하세요.

alias myip="ip -o addr | awk '{split(\$4, a, \"/\"); print \$2\" : \"a[1]}' | grep -v '::'"

Ctrl+O를 사용하여 저장한 다음 Ctrl+X를 사용하여 종료합니다.

source ~/.bashrc

위 명령 앞에 sudo를 붙여야 할 수도 있습니다.

이제 아래와 같이 터미널에 "myip" 명령을 입력할 수 있습니다.

여기에 이미지 설명을 입력하세요.

관련 정보