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