1

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

4

2 に答える 2

1

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

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

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

于 2011-10-18T11:03:21.293 に答える
1

パッケージをインストールする場合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つのインターフェイスの出力eth0lo

eth0,123.234.10.12
lo,127.0.0.1
vboxnet0,NON-IP
wlan0,NON-IP
wlan1,NON-IP
于 2011-10-18T11:06:04.363 に答える