web-dev-qa-db-ja.com

IPのサイズが接続ごとにサイズが変わる場合、スクリプトを使用してifconfigからIPアドレスを取得するにはどうすればよいですか?

私は現在これで働いています

     IFTUN="$(ifconfig tun)"
     IPADD=${IFTUN:106:13}
     echo $IPADD

しかし、IPアドレスのサイズが変更された場合、これはもう機能しません。

     inet addr:1.2.3.4  P-t-P:1.2.3.4  Mask:255.255.254.0
     UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
     RX packets:1151 errors:0 dropped:0 overruns:0 frame:0

だから私が求めているのは、文字数が「1.2.3.4」であっても「111.22.3.44」や「111.222.333.444」であっても、ifconfigからIPを取得する方法です

1
Spud

IfconfigからIPアドレスを取得するには、これを使用できます。

echo `ifconfig tun0 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'`

このコマンドは、tun0のIPアドレスを取得します。

1
Mahdi

推奨されないipの代わりにifconfigコマンドを使用します。

ipAddr=$( ip a s eth0 | awk '/inet.*brd/ {print $2}' )

サンプル出力:172.16.2.136/16

CIDRを含めたくない場合は、これを使用します:

ipAddr=$( ip a s eth0 | awk '/inet.*brd/ {print $2}' | awk -F'/' '{print $1}' )

サンプル出力:172.16.2.136

1
krt

少なくともいくつかのディストリビューションではipに置き換えられるため、ifconfigは使用しません。

インターフェイスがわかっている場合は、次の操作を実行できます。

ip addr | grep eth0 | grep inet | awk '{print $ 2}'

このように切り取ることができるマスクも提供します

ip addr | grep eth0 | grep inet | awk '{print $ 2}' | cut -d "/" -f 1

スクリプトにbashを使用していると仮定しています。別の言語を使用している場合は、ホスト名を取得してIPを検索することもできます。

0
Mat000111