運用Shell 命令列取得本機IP位址

一个新手
發布: 2017-09-07 15:22:52
原創
4686 人瀏覽過


運用Shell 命令列取得本機IP位址

在mac 下方輸入ifconfig 或在linux 下輸入ip a 就可以得到我們的網路卡資訊。不過通常情況下,我們需要查看的是我們的IP位址,不需要這麼多的資訊。所以,我想把這些資訊給摘取出。

mac ifconfig 下面的實作

我們輸入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
登入後複製

好,已經精簡很多了。

我們再排除掉inet6127 的訊息,就可以得到我們的本地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 centos 7 下面實作取得本機IP的腳本

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!