国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Linux下Python獲取IP地址的代碼

2019-11-25 18:03:50
字體:
來源:轉載
供稿:網友

《lnmp一鍵安裝包》中需要獲取ip地址,有2種情況:如果服務器只有私網地址沒有公網地址,這個時候獲取的IP(即私網地址)不能用來判斷服務器的位置,于是取其網關地址用來判斷服務器在國內還是國外(腳本為了使國內用戶快速下載,yum源自動設置成163,這個情況就需要獲取網關地址);如果服務器有公網地址,這時獲取的IP地址可用來直接判斷服務器地理位置。

獲取服務器IP,如果有公網地址就取公網地址,沒有公網地址就取私網網址
下面是之前我用shell來獲取本地IP腳本:

IP=`ifconfig | grep 'inet addr:' | cut -d: -f2 | grep -v ^10/. | grep -v ^192/.168 | grep -v ^172/. | /grep -v ^127/. | awk '{print $1}' | awk '{print;exit}'` [ ! -n "$IP" ] && IP=`ifconfig | grep 'inet addr:' | cut -d: -f2 | grep -v ^127/. | /awk '{print $1}' | awk '{print;exit}'`

Python版:get_local_ip.py:

#!/usr/bin/env pythonimport socketdef Get_local_ip(): """ Returns the actual ip of the local machine. This code figures out what source address would be used if some traffic were to be sent out to some well known address on the Internet. In this case, a Google DNS server is used, but the specific address does not matter much. No traffic is actually sent. """ try:  csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  csock.connect(('8.8.8.8', 80))  (addr, port) = csock.getsockname()  csock.close()  return addr except socket.error:  return "127.0.0.1" if __name__ == "__main__": local_IP = Get_local_ip()  print local_IP

有公網地址直接獲取,沒有公網地址就獲取網關地址(用于判斷IP地址的地理位置):get_public_ip.py

#!/usr/bin/env pythonimport re,urllib2class Get_public_ip: def getip(self):  try:   myip = self.visit("http://www.whereismyip.com/")  except:   try:    myip = self.visit("http://www.ip138.com/ip2city.asp")   except:    myip = "So sorry!!!"  return myip def visit(self,url):  opener = urllib2.urlopen(url)  if url == opener.geturl():   str = opener.read()  return re.search('/d+/./d+/./d+/./d+',str).group(0) if __name__ == "__main__": getmyip = Get_public_ip() print getmyip.getip()

判斷服務器IP地理位置: get_ip_area.py

#!/usr/bin/env python#coding:utf-8try: import sys,urllib2,json apiurl = "http://ip.taobao.com/service/getIpInfo.php?ip=%s" % sys.argv[1]  content = urllib2.urlopen(apiurl).read() data = json.loads(content)['data'] code = json.loads(content)['code'] if code == 0:  print data['country_id'] else:  print dataexcept: print "Usage:%s IP" % sys.argv[0]
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贡觉县| 宁强县| 民权县| 平邑县| 太康县| 津市市| 兰西县| 故城县| 简阳市| 元阳县| 观塘区| 葵青区| 西安市| 介休市| 永宁县| 白玉县| 峡江县| 沁阳市| 资阳市| 武穴市| 乾安县| 治多县| 苍山县| 边坝县| 莎车县| 丹东市| 鄱阳县| 达州市| 泰宁县| 方山县| 海宁市| 西华县| 巴彦县| 临邑县| 扎赉特旗| 霍林郭勒市| 雷波县| 镇宁| 建德市| 来安县| 咸宁市|