Linux下Python获取IP地址的代码

作者:mdxy-dxy 时间:2023-02-27 10:30:07 

《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]

标签:Python,IP地址
0
投稿

猜你喜欢

  • JavaScript 应用技巧集合[推荐]

    2024-05-03 15:06:09
  • Python使用pickle模块存储数据报错解决示例代码

    2023-12-10 02:05:05
  • 浅谈JavaScript的自动垃圾收集机制

    2023-08-13 15:18:57
  • 使用豆瓣源来安装python中的第三方库方法

    2023-10-09 08:53:42
  • 比较详细的Asp伪静态化方法及Asp静态化探讨

    2011-04-14 10:41:00
  • Python Flask 实现 HTML 文件压缩案例代码(9 级压缩)

    2021-05-22 15:22:13
  • Python 实现删除某路径下文件及文件夹的实例讲解

    2021-05-07 08:31:49
  • python实现简单的单变量线性回归方法

    2021-03-27 09:04:51
  • SQLServer导出sql文件/表架构和数据操作步骤

    2024-01-26 19:21:26
  • oracle中add_months()函数及用法总结

    2024-01-13 16:23:59
  • MySQL的root密码丢失解决方法

    2011-05-05 15:56:00
  • python语言的优势是什么

    2022-04-15 18:45:25
  • numpy.transpose()实现数组的转置例子

    2021-11-14 13:24:55
  • Mysql分库分表之后主键处理的几种方法

    2024-01-20 21:00:09
  • JavaScript逆向分析instagram登入过程

    2023-09-08 19:51:52
  • 响应浏览器地址栏#(hash/fragment)变化

    2009-12-28 10:45:00
  • 深入讲解SQL中的字符串拼接

    2024-01-23 17:52:00
  • Python json 错误xx is not JSON serializable解决办法

    2021-06-25 21:58:05
  • 用ASP显示ACCESS数据库的GIF图象

    2008-11-16 18:09:00
  • PHP实现的随机IP函数【国内IP段】

    2024-06-05 09:49:17
  • asp之家 网络编程 m.aspxhome.com