對於bash腳本,我想確定我的設備是否具有Wi-Fi。最簡單的方法是ifconfig和一些正則表達式。 所以我想檢查我的接口en0是否有有效的IP。使用ifconfig檢查我是在本地WiFi還是3G
ifconfig en0 | grep inet | cut -d: -f2 | awk '{ print $2}'
給我知識產權。如果我沒有一個,它不會返回無效,因爲grep
命令不返回任何內容。例如,如何在if
中檢查該問題?
對於bash腳本,我想確定我的設備是否具有Wi-Fi。最簡單的方法是ifconfig和一些正則表達式。 所以我想檢查我的接口en0是否有有效的IP。使用ifconfig檢查我是在本地WiFi還是3G
ifconfig en0 | grep inet | cut -d: -f2 | awk '{ print $2}'
給我知識產權。如果我沒有一個,它不會返回無效,因爲grep
命令不返回任何內容。例如,如何在if
中檢查該問題?
我的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";
你的'cut -d''-f12'命令似乎不會返回同步。 – tzippy 2012-07-25 12:54:11
我已經得到了'(大量的空格)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
我設法與信息,我在其他網站上發現一起把這個。
#!/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
其實我注意到inet
部分是唯一的,當我在那裏連接,所以管道grep inet
應該做的工作就好了!
這是如何幫助檢查WiFi的存在? 'en0'可能是一個電纜連接。 – 2012-07-25 12:07:38
那麼接口就是WiFi接口。所以如果它有一個IP,我肯定是在WiFi上。另外,我沒有以太網接口(iPhone)。 – tzippy 2012-07-25 12:09:19
你們倆都是對的。 iPhone **上的'en0'接口是** WI-Fi,但在實際的計算機上可以是Wi-Fi **或**以太網。 – pasawaya 2012-07-25 12:24:50