欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python獲取linux主機(jī)ip的簡(jiǎn)單實(shí)現(xiàn)方法

 更新時(shí)間:2016年04月18日 10:27:35   作者:mo_guang  
這篇文章主要介紹了Python獲取linux主機(jī)ip的簡(jiǎn)單實(shí)現(xiàn)方法,涉及Python使用socket模塊調(diào)用shell命令的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了Python獲取linux主機(jī)ip的簡(jiǎn)單實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

python有好幾種方法可以獲取主機(jī)的ip地址。我常用的一種是通過(guò)socket.socket().inet_ntoa()來(lái)實(shí)現(xiàn),非常方便;但這種方法有個(gè)限制就是要把網(wǎng)卡名(比如eth0)作為參數(shù)傳進(jìn)來(lái)。所以加多了一個(gè)條件判斷,如果發(fā)現(xiàn)以上方法獲取ip拋異常時(shí),那就用調(diào)起shell命令(ifconfig)和管道,把想要的ip給過(guò)濾出來(lái)。

import socket
import fcntl
import struct
"""
獲取主機(jī)ip地址
參數(shù)ifname: 通過(guò)'lo'獲取的為環(huán)回地址, 通過(guò)'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文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論