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」コマンドを入力できます。

ここに画像の説明を入力してください。

関連情報