獲取系統的IP位址

2022-08-20 04:03:13 字數 1580 閱讀 7832

在很多軟體配置過程中,都需要設定id資訊,通常我選擇使用系統配置的eth0網絡卡的ip位址資訊,比如salt-minion-id,在通過cobbler批量安裝作業系統時,會給作業系統自定義或者dhcp配置ip位址資訊,然後在之後的配置過程中,如何將該ip位址取出來,配置到minion_id檔案中,也是乙個小問題。

最近看了一下正規表示式,想通過正規表示式的方式,從命令列中,獲取到ip位址資訊。不帶任何其他資訊的。

獲取ip位址資訊

通過ip addr show eth0和ifconfig eth0,檢視eth0網絡卡資訊。

[root@salt-master ~]# ip addr show eth0

2: eth0:

mtu 1500 qdisc pfifo_fast state up group default qlen 1000

link/ether 00:0c:29:90:36:9d brd ff:ff:ff:ff:ff:ff

inet 192.168.64.131/24 brd 192.168.64.255 scope global eth0

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fe90:369d/64 scope link

valid_lft forever preferred_lft forever

我們要獲取的是inet位址,192.168.64.131,只是乙個位址,不需要/24的掩碼和其他資訊。

sed擷取

主要的實現方式是,通過sg替換,將不需要的內容匹配出來,然後替換為空,然後保留最後的資訊。

sed -n 取消預設輸出,只顯示sed之後的結果

sed 's###g' 查詢,替換

sed p 列印編輯後的內容, 's###gp'

[root@salt-master ~]# ip addr show eth0|sed -n 's#.*inet ##gp'

192.168.64.131/24 brd 192.168.64.255 scope global eth0

匹配inet之前的部分,然後全部替換為空,然後列印出來

上面就已經擷取出來ip位址部分了,但是後面還有一些資訊不需要。再匹配一次

[root@salt-master ~]# ip addr show eth0|sed -n 's#.*inet ##gp'|sed -n 's#/.*##gp'

192.168.64.131

匹配掩碼/和後面所有內容,然後替換為空,列印出來,這樣就顯示出來ip位址了。

sed後向引用

[root@salt-master ~]# ip addr show eth0|sed -nr 's#.*inet (.*)/.*#\1#gp'

192.168.64.131

這個解釋起來比較簡答,首先是獲取eth0的全部輸出,然後匹配 .*inet (.)/.

如果括號比較多,可以以此類推,\2 \3這麼展示。

其實獲取ip位址還有很多簡單的方法,比如直接檔案中進行擷取等等。

獲取linux系統的ip位址

使用shell指令碼獲取linux系統的ip位址 ifconfig a grep inet grep v 127.0.0.1 grep v inet6 awk tr d addr 如果沒有ifconfig命令,可使用 ip addr grep inet grep v 127.0.0.1 grep v...

linux c函式獲取系統IP位址

一,通過分析 etc hosts檔案裡對映關係獲取ip位址。include include int main gethostname hostname,sizeof hostname he gethostbyname hostname printf hostname s n hostname pri...

系統介面獲取網絡卡ip位址

有時候程式需要獲取網絡卡的ip位址我們習慣於ifconfig獲取,有的人也使用popen用ifconfig來獲取但是現在我將介紹下通過系統介面獲取,如下 include include include include int getsubnetmask char ip for ifa iflist ...