私は現在これで働いています
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を取得する方法です
Ifconfig
からIPアドレスを取得するには、これを使用できます。
echo `ifconfig tun0 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'`
このコマンドは、tun0
のIPアドレスを取得します。
推奨されない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
少なくともいくつかのディストリビューションでは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を検索することもできます。