您好,登錄后才能下訂單哦!
由于公司使用的是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進行測試:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。