2012-07-25 19 views
0

對於bash腳本,我想確定我的設備是否具有Wi-Fi。最簡單的方法是ifconfig和一些正則表達式。 所以我想檢查我的接口en0是否有有效的IP。使用ifconfig檢查我是在本地WiFi還是3G

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

給我知識產權。如果我沒有一個,它不會返回無效,因爲grep命令不返回任何內容。例如,如何在if中檢查該問題?

+0

這是如何幫助檢查WiFi的存在? 'en0'可能是一個電纜連接。 – 2012-07-25 12:07:38

+0

那麼接口就是WiFi接口。所以如果它有一個IP,我肯定是在WiFi上。另外,我沒有以太網接口(iPhone)。 – tzippy 2012-07-25 12:09:19

+0

你們倆都是對的。 iPhone **上的'en0'接口是** WI-Fi,但在實際的計算機上可以是Wi-Fi **或**以太網。 – pasawaya 2012-07-25 12:24:50

回答

-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 

但是差別不是很大U將找出u需要改變(我的理解u需要檢查一個接口 - 在這裏爲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"; 
+0

你的'cut -d''-f12'命令似乎不會返回同步。 – tzippy 2012-07-25 12:54:11

+0

我已經得到了'(大量的空格)inet addr:192.168.210.140 Bcast:192.168.215.255 Mask:255.255.248.0'/ sbin/ifconfig eth0 | grep -e'inet''。你需要檢查你的grep打印和調整cut選項-f。 – 2012-07-25 13:19:28

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 
0

其實我注意到inet部分是唯一的,當我在那裏連接,所以管道grep inet應該做的工作就好了!

相關問題