Python获取linux主机ip的简单实现方法

本文实例讲述了Python获取linux主机ip的简单实现方法。分享给大家供大家参考,具体如下:

python有好几种方法可以获取主机的ip地址。我常用的一种是通过socket.socket().inet_ntoa()来实现,非常方便;但这种方法有个限制就是要把网卡名(比如eth0)作为参数传进来。所以加多了一个条件判断,如果发现以上方法获取ip抛异常时,那就用调起shell命令(ifconfig)和管道,把想要的ip给过滤出来。

import socket
import fcntl
import struct
"""
获取主机ip地址
参数ifname: 通过'lo'获取的为环回地址, 通过'eth0'获取的为主机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 ''

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

(0)

相关推荐

  • Linux 发邮件磁盘空间监控(python)

    核心代码: #!/usr/bin/python # -*- coding: UTF-8 -*- import smtplib import os import commands,time from email.mime.text import MIMEText #from email import MIMEText disk_free=os.popen('df -lh') list_disk=disk_free.read() mailto_list=["2880329185@qq.com&quo

  • Python2.x利用commands模块执行Linux shell命令

    用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要函数: 1. commands.getoutput('shell command') 执行shell命令,返回结果(string类型) 复制代码 代码如下: >>> commands.getoutput('pwd') '/home/oracle' 2. commands.getstatus(

  • Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法

    本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL.Oracle.SQL Server数据库. 其中包括以下几个软件的安装及配置: unixODBC FreeTDS pyodbc cx_Oracle 欢迎转载,请注明作者.出处. 作者:张正 QQ:176036317 如有疑问,欢迎联系. 本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL.Oracle.SQ

  • Linux上安装Python的PIL和Pillow库处理图片的实例教程

    安装 正常情况,只需 pip install PIL==1.1.7 或者 pip install Pillow==2.9.0 即可.但需留意安装后的输出 安装完成后,需留意输出: *** TKINTER support not available *** JPEG support not available *** WEBP support not available *** ZLIB (PNG/ZIP) support not available *** FREETYPE2 support n

  • Linux中Python 环境软件包安装步骤

    简介: 记录一下关于 Python 环境软件包的一些安装步骤 1.升级 Python 到 2.7.10( 默认 2.6.6 ) shell > yum -y install epel-release shell > yum -y install gcc wget readline-devel zlib-devel openssl-devel shell > wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz sh

  • 请不要重复犯我在学习Python和Linux系统上的错误

    本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习.使用的对象,它简单.易用.好操作.界面绚丽,对于想接触Linux的新手来说是非常不错的.后来因为个人的知识有限,玩不转Linux的种种配置.各种插件以及软件缺失,加之没有持之以恒的坚持下去,使用了一段时间后感觉Bug多.没游戏.办公写文档也不方便,很多软件需要现学,最终希望用大学时光学习Linux的愿望夭折了. 后来一段时间里,自己接触了Python语言,Python语言让我

  • Python实现Linux命令xxd -i功能

    一. Linux xxd -i功能 Linux系统xxd命令使用二进制或十六进制格式显示文件内容.若未指定outfile参数,则将结果显示在终端屏幕上:否则输出到outfile中.详细的用法可参考linux命令xxd. 本文主要关注xxd命令-i选项.使用该选项可输出以inputfile为名的C语言数组定义.例如,执行echo 12345 > test和xxd -i test命令后,输出为: unsigned char test[] = { 0x31, 0x32, 0x33, 0x34, 0x3

  • Python获取linux主机ip的简单实现方法

    本文实例讲述了Python获取linux主机ip的简单实现方法.分享给大家供大家参考,具体如下: python有好几种方法可以获取主机的ip地址.我常用的一种是通过socket.socket().inet_ntoa()来实现,非常方便:但这种方法有个限制就是要把网卡名(比如eth0)作为参数传进来.所以加多了一个条件判断,如果发现以上方法获取ip抛异常时,那就用调起shell命令(ifconfig)和管道,把想要的ip给过滤出来. import socket import fcntl impor

  • Python获取服务器信息的最简单实现方法

    本文实例讲述了Python获取服务器信息的最简单实现方法.分享给大家供大家参考.具体如下: 主要核心代码如下: sUrl = 'http://www.163.com' sock = urllib2.urlopen(sUrl) sock.headers.values() 希望本文所述对大家的Python程序设计有所帮助.

  • Python 获取主机ip与hostname的方法

    ->基础环境 Linux:ubuntu 16.04 Python : 2.7 ->修改hostname 1:$sudo hostname 2tong-slavetwo 2:$sudo vi /etc/hostname 2tong-slavetwo 3:$sudo vi /etc/hosts 127.0.0.1 localhost 2tong-slavetwo 127.0.1.1 2tong-slavetwo ->Python 环境下输出ip hostname >>>im

  • Linux下通过python获取本机ip方法示例

    下面介绍在Linux上利用python获取本机ip的方法. 经过网上调查, 发现大致有两种方法, 一种是调用shell脚本,另一种是利用python中的socket等模块来得到,下面是这两种方法的源码: #!/usr/bin/env python #encoding: utf-8 #description: get local ip address import os import socket, fcntl, struct def get_ip(): #注意外围使用双引号而非单引号,并且假设默

  • python获取linux和windows系统指定接口的IP地址的步骤及代码

    实验目的: 用户输入网卡名称,通过函数返回对应的IPv4和IPv6地址. 实验代码: 步骤一: 由于window系统下网卡名称并不是真正的名字,而真正的ID在注册表SYSTEM\CurrentControlSet\Control\Network{4d36e972-e325-11ce-bfc1-08002be10318}目录下.所以需要通过如下代码,返回接口名称和唯一ID的对应关系. win_ifname.py: import netifaces as ni # import winreg as

  • 如何用Python获取计算机名,ip地址,mac地址

    获取计算机名 # 获取计算机名,常用的方法有三种,但最常用的是第一种 import os import socket # method one name = socket.gethostname() print(name) # hanser # method two name = os.popen("hostname").read() print(name) # hanser # method three name = os.environ.get("COMPUTERNAME

  • python获取linux系统信息的三种示例

    方法一:psutil模块 #!usr/bin/env python # -*- coding: utf-8 -*- import socket import psutil class NodeResource(object): def get_host_info(self): host_name = socket.gethostname() return {'host_name':host_name} def get_cpu_state(self): cpu_count = psutil.cpu

  • python获取linux系统信息的三种方法

    方法一:psutil模块 #!usr/bin/env python # -*- coding: utf-8 -*- import socket import psutil class NodeResource(object): def get_host_info(self): host_name = socket.gethostname() return {'host_name':host_name} def get_cpu_state(self): cpu_count = psutil.cpu

  • 使用Python获取并处理IP的类型及格式方法

    公网与私有网络的判断其实十分简单,只要记住私有网络的三个网段.不过,对于记性不好的人或者学识不是很高的机器来说,有一种判断方法还是有必要的. 写如下脚本: from IPy import IP ip1 = IP('192.168.1.2') ip2 = IP('11.12.13.14') print("ip1 type: %s" % ip1.iptype()) print("ip2 type: %s" % ip2.iptype()) print("ip2

  • 分享Python获取本机IP地址的几种方法

    目录 1.使用专用网站 2.使用自带socket库 3.使用第三方netifaces库 1.使用专用网站 获取的是公网IP 网址:http://myip.ipip.net 代码: import requests res = requests.get('http://myip.ipip.net', timeout=5).text print(res) 比较喜欢用这个,在命令窗口也能使用: curl http://myip.ipip.net 2.使用自带socket库 获取的是局域网IP. impo

随机推荐