1. 程式人生 > >python腳本實現公司辦公網ip段落使用情況

python腳本實現公司辦公網ip段落使用情況

val 排查 vmware VM start for AS list error

由於公司使用的是VMware虛擬化技術,每次創建虛機都要分配一個連接外網的ip地址,另外公司規模擴大,新人也需要分配ip地址,那麽很容易造成ip地址的爛用和ip地址的沖突,

所以決定通過一個腳本進行ip的空閑使用情況進行排查,減少運維的時間成本,較少ip沖突的情況:

腳本內容如下:

如果要使用可以修改成自己公司的ip地址即可:


# /usr/bin/env python

#-*-conding:utf-8-*-

import subprocess

import threading

import time

import re


ip_num = 256

list_ping_result = []



class PingThread(threading.Thread):

def __init__(self, str_ip, sleep_time, g_list_p_r):

threading.Thread.__init__(self)

self.sleep_time = sleep_time

self.str_ip = str_ip

self.list_p_r = g_list_p_r


def run(self):

time.sleep(self.sleep_time)

ftp_sub = subprocess.Popen("ping %s -n 3" % self.str_ip,

stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)

ret = ftp_sub.stdout.read()

str_ret = ret.decode("gbk")

ret_s = re.search("TTL", str_ret)

if ret_s:

self.list_p_r.append(('ping ok', self.str_ip))

else:

self.list_p_r.append(('ping error', self.str_ip))



def cmp_s(toupe_str):

str_val = toupe_str[1]

ret_group = re.match("\d*", str_val[::-1])

str_ret = ret_group.group()

return int(str_ret[::-1])



thread_id = []

for i in range(ip_num):

thread_id.append(0)

thread_id[i] = PingThread("198.9.6.%d" % i, int(i / 20), list_ping_result)

thread_id[i].start()

print(i, end='')


while True:

if len(list_ping_result) >= ip_num:

list_ping_result.sort(key=cmp_s)

for i in list_ping_result:

print(i)


break

結果如下:

技術分享圖片

可以通過平命令進行驗證:

使用上圖的28和29ip進行測試:

技術分享圖片


python腳本實現公司辦公網ip段落使用情況