0

bashスクリプトの場合、デバイスにWi-Fiがあるかどうかを確認したいと思います。私にとって最も簡単な方法は、ifconfigといくつかの正規表現です。そこで、インターフェイスen0に有効なIPがあるかどうかを確認したいと思います。

ifconfig en0 | grep inet | cut -d: -f2 | awk '{ print $2}'

IPを教えてくれます。grepコマンドが何も返さないので、持っていない場合は何も返されません。ifたとえば、どうすればそれを確認できますか?

4

3 に答える 3

0

私はこれを他のサイトで見つけた情報と一緒にまとめることができました。

#!/bin/sh
IP_ADDRESS=$(ifconfig en0 | grep inet | cut -d: -f2 | awk '{ print $2}')
IP_ADDR_VAL=$(echo "$IP_ADDRESS" | grep -Ec '^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])')

if [ $IP_ADDR_VAL -eq 0 ]; then
   echo not valid
else 
   echo valid
fi
于 2012-07-25T12:56:56.117 に答える
0

実際、接続されているときにのみその部分があることに気付きましinetた。パイプgrep inet でうまく機能するはずです。

于 2012-07-26T11:13:28.783 に答える
-1

私のifconfig出力が異なります

inet addr:192.168.210.140  Bcast:192.168.215.255  Mask:255.255.248.0
inet6 addr: fe80::92fb:a6ff:fe66:970/64 Scope:Link

ただし、違いは大きくありません。何を変更する必要があるかがわかります(1つのインターフェイスをチェックする必要があることを理解しています-ここではeth0。すべてのインターフェイスには1つのinet行があります)

if [[ `/sbin/ifconfig eth0 | grep -e 'inet ' | cut -d ' ' -f12 | grep -E "^addr:[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3}$" | wc -l` -eq 1 ]]; then
  echo "correct IP";
else
  echo "no IP";
fi
echo " assigned";
于 2012-07-25T12:41:57.803 に答える