簡體   English   中英

使用ifconfig檢查我是否在本地WiFi或3G上

[英]Using ifconfig to check whether I'm on local WiFi or 3G

對於bash腳本,我想確定我的設備是否具有Wi-Fi。 對我來說,最簡單的方法是ifconfig和一些正則表達式。 因此,我想檢查我的接口en0是否具有有效的IP。

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

給我IP。 如果我沒有,因為grep命令什么也不返回,所以它不會返回任何內容。 如何在檢查這if為例子嗎?

我設法將其與在其他站點上找到的信息放在一起。

#!/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應該可以很好地完成工作!

我的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";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM