在mac 下方輸入ifconfig
或在linux
下輸入ip a
就可以得到我們的網路卡資訊。不過通常情況下,我們需要查看的是我們的IP位址,不需要這麼多的資訊。所以,我想把這些資訊給摘取出。
我們輸入ifconfig
會得到大段的訊息,我們可以看到我們想要的IP位址前面的字串是inet
所以,我們優化一下程式碼如下:
ifconfig | grep inet
得到以下資訊:
inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet6 fe80::85e:9798:4041:1717%en0 prefixlen 64 secured scopeid 0x4 inet 192.168.12.139 netmask 0xffffff00 broadcast 192.168.12.255 inet6 fd86:415c:c5f9::c72:1c02:f044:65de prefixlen 64 autoconf secured inet6 fd86:415c:c5f9::cd76:7bb1:f77d:46f0 prefixlen 64 deprecated autoconf temporary inet6 fd86:415c:c5f9::508d:685b:6a66:b3ce prefixlen 64 autoconf temporary inet6 fe80::9446:a1ff:fe5e:9b8f%awdl0 prefixlen 64 scopeid 0x9 inet6 fe80::9d71:6fa:3da5:9cb6%utun0 prefixlen 64 scopeid 0xa
好,已經精簡很多了。
我們再排除掉inet6
和127
的訊息,就可以得到我們的本地IP了
ifconfig | grep inet | grep -v inet6 | grep -v 127
得到
inet 192.168.12.139 netmask 0xffffff00 broadcast 192.168.12.255
最前面是一個製表符,我們不管,我們用空格分割,並取第二個字段,就可以得到我們的IP信息了
ifconfig | grep inet | grep -v inet6 | grep -v 127 | cut -d ' ' -f2
就順利的得到另外我們想要的本機IP位址。
我們在~/.bin/
下面創建一個getip
的文件,並用chmod +x ~/.bin/getip
賦予執行權限。然後在命令列輸入 getip
就可以得到我們的本機IP了。
需要先把
~/.bin/
配置為環境變量,請參考將這個指令當作一個系統指令,可以隨時執行
linux
不使用ifconfig
指令來取得信息,而是使用ip a
來獲取。
所以我們把上面的指令修改一下,改成
ip a | grep inet | grep -v inet6 | grep -v 127 | sed 's/^[ \t]*//g' | cut -d ' ' -f2
由於linux 中得到的資訊的最前面不是製表符而是空格,所以加上了sed ' s/^[ \t]*//g'
來清除開頭的空格。
其他的邏輯是一樣的。如果喜歡的話,也可以搞成全局的,邏輯基本上和mac是一致的。
以上是運用Shell 命令列取得本機IP位址的詳細內容。更多資訊請關注PHP中文網其他相關文章!