Command-Line

如何使用 ifconfig 僅顯示活動界面

  • February 24, 2022

預設情況下ifconfig會顯示所有可用的介面,但如果我只想顯示active那些呢?像,en0只在下面。

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
   ether 14:10:9f:e0:eb:c9 
   inet6 fe80::1610:9fff:fee0:ebc9%en0 prefixlen 64 scopeid 0x4 
   inet X.X.X.X netmask 0xffffff00 broadcast 101.6.69.255
   nd6 options=1<PERFORMNUD>
   media: autoselect
   **status: active**
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
   options=60<TSO4,TSO6>
   ether 32:00:14:e7:4f:80 
   media: autoselect <full-duplex>
   **status: inactive**

通知ifconfig en0不會滿足,en0並不總是主動的;)

我正在執行 Mac OS X。

要獲得所有活動服務的完整描述,請嘗試:

ifconfig | pcregrep -M -o '^[^\t:]+:([^\n]|\n\t)*status: active'

這個簡單的正則表達式應該只過濾掉活動介面及其所有資訊。我建議您在 ~/.profile 或 ~/.bash_profile 文件中為此設置一個別名(也許是 ifactive?)

要獲取介面名稱(對腳本有用),請使用:

ifconfig | pcregrep -M -o '^[^\t:]+:([^\n]|\n\t)*status: active' | egrep -o -m 1 '^[^\t:]+'

您必須安裝pcregrep才能正常工作。它在 pcre 包中的macports上。或者,這應該與 GNU grep 一起使用grep -Pzo,而不是使用,pcregrep -M -o但其餘部分相同,但我尚未對此進行測試。

引用自:https://unix.stackexchange.com/questions/103241