設定されている場合次の出力を提供します。
eth0 Link encap:Ethernet HWaddr 4c:87:0e:z3:e7:11
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:35767 errors:0 dropped:0 overruns:0 frame:0
TX packets:35767 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5053027 (5.0 MB) TX bytes:5053027 (5.0 MB)
vmnet1 Link encap:Ethernet HWaddr 60:80:66:m0:00:01
inet addr:192.168.139.1 Bcast:192.168.139.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:70 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
現在、このような出力が必要です。
eth0
wlan0 127.0.0.1
vmnet1 192.168.139.1
だからコマンドを実行します。
ifconfig | awk '/encap|inet addr/{ print }'
しかし、天候に応じて2つの行をマージする必要があり、次の行にipaddressパターンが含まれているため、今は詰まっています。シェルスクリプトを使用すると問題を解決できますが、単純な単一のコマンドソリューションが必要です。 awkにforループがありますが、次の行を期待して一致させてからコンソールに印刷するのは私にとって難しいことです。
それとも、このようなことを達成するための簡単なコマンド/フラグはありますか?
Route コマンドはトリック (awk フィールド抽出!!) を実行しているように見えますが、非アクティブなインターフェイスは一覧表示されません。
ベストアンサー1
GNU/Linux を実行する場合:
for DEV in /sys/class/net/*; do
printf "%-10s %s\n" ${DEV##*/} $(ip addr show ${DEV##*/} | \
sed -rne '/inet/s:\s+inet\s+([0-9.]+).*:\1:gp');
done
またはifconfig
要件の場合:
for DEV in /sys/class/net/*; do
printf "%-10s %s\n" ${DEV##*/} $(ifconfig ${DEV##*/} | \
sed -rne '/inet adr/s/\s+inet adr:([0-9.]+).*/\1/gp');
done
それは作り出す
eth0 192.168.10.34
eth1
lo 127.0.0.1
...
必要ですがiproute2
。