使用ifconfig检查我是使用本地WiFi还是3G

时间:2012-07-25 12:05:32

标签: iphone bash ip wifi ifconfig

对于bash脚本,我想确定我的设备是否具有Wi-Fi。对我来说最简单的方法是ifconfig和一些正则表达式。 所以我想检查我的接口en0是否有有效的IP。

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

给了我IP。如果我没有它,它不会返回任何内容,因为grep命令不返回任何内容。我如何在if中查看该内容?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

实际上我注意到inet部分仅在我连接时才存在,所以管道grep inet应该可以正常工作!

答案 2 :(得分:-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
然而,差异并不大,你会发现你需要改变的东西(我知道你需要检查一个接口 - 这里是eth0;每个接口都有一个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";