Python2使用原生库获取Linux服务器网卡ip

前瞻

因写自动化部署脚本需要是对节点信息进行判断,并且公司服务器均为centos7,仅原生python2.7。在不使用第三方库的前提下需要能够获取具体网卡IP。

1、引入Python2原生库

import socket
import fcntl
import struct

2、获取网卡IP地址

# 获取指定网卡IP地址
def get_ip_address(ifname):
    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])

3、对节点进行判断

def check_ip(node_list):
	# 从字典中提取网卡名称,并转换为string
    ip_device_name = str(setting_dict['device'])
    try:
        localip = get_ip_address(ip_device_name)
        if localip not in node_list:
            print('xxxx')
            sys.exit(1)
    except IOError as device:
        print('获取网卡信息失败,原因:{}'.format(device))

你可能感兴趣的:(Django,服务器,linux,tcp/ip)