由于公司使用的是VMware虛擬化技術(shù),每次創(chuàng)建虛機(jī)都要分配一個(gè)連接外網(wǎng)的ip地址,另外公司規(guī)模擴(kuò)大,新人也需要分配ip地址,那么很容易造成ip地址的爛用和ip地址的沖突,
創(chuàng)新互聯(lián)建站長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為東昌企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站設(shè)計(jì),東昌網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
所以決定通過(guò)一個(gè)腳本進(jìn)行ip的空閑使用情況進(jìn)行排查,減少運(yùn)維的時(shí)間成本,較少ip沖突的情況:
腳本內(nèi)容如下:
如果要使用可以修改成自己公司的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
結(jié)果如下:
可以通過(guò)平命令進(jìn)行驗(yàn)證:
使用上圖的28和29ip進(jìn)行測(cè)試: