Linux下Python获取IP地址的代码_python

《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 python
import socket
def 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 python
import re,urllib2
class 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-8
try:
 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 data
except:
 print "Usage:%s IP" % sys.argv[0]

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索python
ip地址
python 获取ip地址、python获取网卡ip地址、python获取本机ip地址、python3 获取ip地址、linux自动获取ip地址,以便于您获取更多的相关知识。

时间: 2024-12-22 19:48:35

Linux下Python获取IP地址的代码_python的相关文章

Python获取IP地址的三种方法

  在python中获取IP地址的方法很简单,我们只和gethostbyname和gethostbyname_ex两个函数可以实现了,当然也可以利用公网api来实现. 使用拨号上网的话,一般都有一个本地ip和一个外网ip,使用python可以很容易的得到这两个ip 使用gethostbyname和gethostbyname_ex两个函数可以实现  代码如下   import socket localIP = socket.gethostbyname(socket.gethostname())#这

Linux命令行获取IP地址的实际地理位置

方法一 第一种方法是使用geoiplookup工具,它是一个用于查询MaxMind的GeoIP数据库的命令行客户端.geoiplookup允许你查询一个IP地址(或域名)的地理信息或者网络信息.你可以通过以下命令安装它(它自带了免费的GeoIP数据库). 在Debian,Ubuntu或Linux Mint上安装geoiplookup:   sudo apt-get install geoip-bin 在Fedora上安装:   sudo yum install geoip 要在CentOS上安装

在Linux下修改网卡IP地址

要修改的文件: 1./etc/sysconfig/network-scripts/ifcfg-eth0 2./etc/sysconfig/network 3./etc/resolv.conf 4./etc/init.d/network restart 重启网卡,生效 A .修改ip地址 即时生效: # ifconfig eth0 192.168.0.20 netmask 255.255.255.0 启动生效: 修改/etc/sysconfig/network-scripts/ifcfg-eth0

linux下如何修改ip地址,主机名等信息

  修改ip地址 即时生效: # ifconfig eth0 192.168.0.20 netmask 255.255.255.0 启动生效: 修改/etc/sysconfig/network-scripts/ifcfg-eth0 修改default gateway 即时生效: # route add default gw 192.168.0.254 启动生效: 修改/etc/sysconfig/network-scripts/ifcfg-eth0 修改dns 修改/etc/resolv.con

在InstallShield中通过主机名获取IP地址的代码_其它

// 文 件 名:setup.rul // 脚本功能:通过主机名获得TCP/IP地址 // 编写日期:2003-07-15 // 使用方法:调用函数 fGetIpAddress(szHost, szIPAdress) // written by Jaron ,2002-07-15  // 原出处:江都资讯网论坛 http://www.jiangdu.net/bbs;;  // 转载请注明出处和保留此版权信息  // 欢迎使用SiteManager网站管理系统 http://sitemanager

asp下比较全面的获取IP地址的代码_应用技巧

最简单的用以下语句: ip=request.ServerVariables("REMOTE_ADDR")  response.Write(ip) 但这种方法对代理服务器上网的就不准了,故比较全面的是用下面的方法: 复制代码 代码如下: <%Private Function getIP()   Dim strIPAddr   If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR 

asp下比较全面的获取IP地址的代码

最简单的用以下语句: ip=request.ServerVariables("REMOTE_ADDR")  response.Write(ip) 但这种方法对代理服务器上网的就不准了,故比较全面的是用下面的方法: 复制代码 代码如下: <%Private Function getIP()   Dim strIPAddr   If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR 

python在windows和linux下获得本机本地ip地址方法小结_python

本文实例总结了python在windows和linux下获得本机本地ip地址方法.分享给大家供大家参考.具体分析如下: python的socket包含了丰富的函数和方法可以获得本机的ip地址信息,socket对象的gethostbyname方法可以根据主机名获得本机ip地址,socket对象的gethostbyname_ex方法可以获得本机所有ip地址列表 第一种方法:通过socket.gethostbyname方法获得 import socket localIP = socket.gethos

python在Windows8下获取本机ip地址的方法_python

本文实例讲述了python在Windows8下获取本机ip地址的方法.分享给大家供大家参考.具体实现方法如下: import socket hostname = socket.gethostname() IPinfo = socket.gethostbyname_ex(hostname) LocalIP = IPinfo[2][2] print LocalIP 希望本文所述对大家的Python程序设计有所帮助. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内