/ / BASHで、すべてのインターフェイスのIPアドレスを正確に見つける方法はありますか?そして、他のすべての情報を削除しますか? --linux、bash、archlinux、bash4

BASHでは、すべてのインターフェイスのIPアドレスを正確に見つける方法はありますか?その他の情報はすべて削除しますか? - linux、bash、archlinux、bash4

IPのみを取得するにはどうすればよいですか?それはどのインターフェイスIPですか? realtime.iniなどのレコードファイルを保持できるように

1-test.sh

#!/bin/bash
ipstring ="inet (.*)"

for i in $(ip addr);
do
echo $i #on found it write down to my realtime.ini as a list for future query
done

2-realtime.ini

em1,192.168.1.2
lo,127.0.0.1
wlan0,<not found>

ファローアップ: シングルIPの場合: $ ifconfig eth0 | grep "inet addr:" |カット-d:-f2 | awk "{print $ 1}" 192.168.1.2

回答:

回答№1は2

これはひどくエレガントでもbashでもありませんが、awkとsedの両方がある場合は次のことができます。

ifconfig | awk "BEGIN { FS = "n"; RS = "" } { print $1 $2 }" | sed -e "s/ .*inet addr:/,/" -e "s/ .*//"

私もこれが非常にポータブルであることには賭けないので、誰かがより良い答えを持っているかもしれません。


回答№2については2

インストールすれば moreutils パッケージ、便利に使えます ifdata コマンド:

for INTF_PATH in /sys/class/net/* # list all interfaces
do
INTF=$(basename $INTF_PATH) # interface name
echo "$INTF,$(ifdata -pa $INTF)" # interface name and address
done

5つのインターフェイスの出力例 eth0 そして lo アップしています:

eth0,123.234.10.12
lo,127.0.0.1
vboxnet0,NON-IP
wlan0,NON-IP
wlan1,NON-IP