Python獲取linux主機(jī)ip的簡單實現(xiàn)方法
本文實例講述了Python獲取linux主機(jī)ip的簡單實現(xiàn)方法。分享給大家供大家參考,具體如下:
python有好幾種方法可以獲取主機(jī)的ip地址。我常用的一種是通過socket.socket().inet_ntoa()來實現(xiàn),非常方便;但這種方法有個限制就是要把網(wǎng)卡名(比如eth0)作為參數(shù)傳進(jìn)來。所以加多了一個條件判斷,如果發(fā)現(xiàn)以上方法獲取ip拋異常時,那就用調(diào)起shell命令(ifconfig)和管道,把想要的ip給過濾出來。
import socket
import fcntl
import struct
"""
獲取主機(jī)ip地址
參數(shù)ifname: 通過'lo'獲取的為環(huán)回地址, 通過'eth0'獲取的為主機(jī)ip地址
"""
def get_ip_address(ifname='eth0'):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])
except:
ips = os.popen("LANG=C ifconfig | grep \"inet addr\" | grep -v \"127.0.0.1\" | awk -F \":\" '{print $2}' | awk '{print $1}'").readlines()
if len(ips) > 0:
return ips[0]
return ''
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
python安裝cxOracle避坑總結(jié)不要直接pip install
這篇文章主要為大家介紹了python安裝cx_Oracle是遇到的一些問題的解決辦法的總結(jié),來幫大家避避坑有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步2021-10-10
Python實現(xiàn)日志實時監(jiān)測的示例詳解
觀察者模式:是一種行為型設(shè)計模式。主要關(guān)注的是對象的責(zé)任,允許你定義一種訂閱機(jī)制,可在對象事件發(fā)生時通知多個"觀察"該對象的其他對象。本文將利用觀察者模式實現(xiàn)日志實時監(jiān)測,需要的可以參考一下2022-04-04
Python可視化Matplotlib散點圖scatter()用法詳解
這篇文章主要介紹了Python可視化中Matplotlib散點圖scatter()的用法詳解,文中附含詳細(xì)示例代碼,有需要得朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
Python中線程threading.Thread的使用詳解
python的thread模塊是比較底層的模塊,python的threading模塊是對thread做了一些包裝的,可以更加方便的被使用。本文將為大家詳細(xì)介紹一下python中的線程threading.Thread()的使用,需要的可以參考一下2022-07-07

