最近公司要清洗一下服务器的ip使用情况,需求如下:
1,统计所有服务器的内外网ip使用情况(结合业务),找出释放ip
2,批量操作近500台左右的服务器,进行统计
服务器ip校验初步开始:
#!/bin/python
#-*- coding:utf-8 –*-
import os
import socket,fcntl,struct
#获取ip a和hostname
def get_iphn():
global Inner_ip,Outer_ip
Inner_ip = os.popen("ifconfig |grep 'inet'|grep -v '127.0.0.1'|grep -v 'inet6'|awk '{print $2}'|grep '^10.*'").read()
Outer_ip = os.popen("ifconfig |grep 'inet'|grep -v '127.0.0.1'|grep -v 'inet6'|awk '{print $2}'|grep -v '^10.*'|grep -v '^172*'").read()
hostname = os.popen("hostname").read()
print "主机名位:\n",hostname
print "内网ip为:\n",Inner_ip
print "公网ip为: \n",Outer_ip
#获取网卡配置ip
def net_ip():
network = os.popen("cat /etc/sysconfig/network-scripts/ifcfg-*|grep IPADDR|awk -F '=' '{print $2}'|grep -v '127.0.0.1'").read()
print "网卡配置的全部ip为:\n",network
#没有内网的机器
line = os.popen("ifconfig |grep 'inet'|grep -v '127.0.0.1'|grep -v 'inet6'|awk '{print $2}'|grep '^10.*'|wc -l").read()
print "开始检测网卡配置是否正确。。。"
if Inner_ip in network :
if line == 0:
print "内网配置不正确"
else:
print "内网配置正确"
if Outer_ip in network:
print "公网配置正确"
else:
print "公网配置不正确"
#获取指定网卡ip(用于网卡名称不一致)
def get_ip2(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', ifname[:15]))[20:24])
#调用模块
#if __name__ == '__main__':
#get_ip2('lo')
get_iphn()
net_ip()