国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現根據指定端口探測服務器/模塊部署的方法

2020-02-23 05:42:44
字體:
來源:轉載
供稿:網友

本文實例講述了Python實現根據指定端口探測服務器/模塊部署的方法,非常具有實用價值。分享給大家供大家參考借鑒。

有些時候,在維護過程中,服務器數量非常多。應用模塊部署在不同服務器上。有時維護人員做了模塊遷移,而未及時同步至手冊中。查找比較困難。于是,產生Python根據應用端口進行探測,獲取模塊部署。

設想非常簡單:通過簡單的tcp鏈接,如果能夠成功的建立,立即斷開,防止影響業務。表示模塊在某服務器上有部署。

具體功能代碼如下:

#!/bin/env python#import socketimport timefrom threading import ThreadhostList=["10.10.126.170","10.10.126.173","10.10.126.177","10.10.126.170","10.10.126.173","10.10.126.177"]onLine=[]offLine=[]gathered=[]hostDict={"onLine":[],"offLine":[]}class detect(Thread): def __init__(self,ip, port=22): Thread.__init__(self) self.ip=ip self.port=port def run(self): address=(self.ip,self.port) sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM) try:  sock.connect(address)  buff=sock.recv(1024)  if(len(buff)):  print("detect Host %s Online" % self.ip)  onLine.append(self.ip) except:  print("detect Host %s OffLine" % self.ip)  offLine.append(self.ip) sock.closedef sigle_detect(ip): p=detect(ip) p.start() p.join(60)def multi_detect(host): T_thread=[] for ip in set(host): t=detect(ip) t.name=ip t.start() T_thread.append(t) for t in T_thread: t.join(15) def filter_gather(hlist): gather=[] for t in set(hlist): gather.append(t) return gatherdef mak_hostList_byip3(iplist): global hostList hostList=[] for ip in set(iplist): tmp=ip.split('.') if(len(tmp)==3):  for i in range(2,254):  hostList.append('%s.%d' % (ip, i)) elif(len(tmp)==4):  hostList.append(ip) else:  continue return hostListdef update_hostDict(onLine, offLine): hostDict["onLine"]=onLine hostDict["offLine"]=offLinedef make_pickle_fileName(): import time fileName="" for s in time.localtime()[:5]: fileName=fileName+str(s) fileName="Host_%s.pkl" % fileName return fileNamedef save_gathered(fileName, hostDict): import pickle F=open(fileName,'wb') pickle.dump(hostDict,F) F.close()def recovery_gathered(fileName, keyList): import pickle try: F=open(fileName,'rb') E=pickle.load(F) keyList.append(E) except: F.close() return while E: try:  E=pickle.load(F)  keyList.append(E) except:  F.close()  breakif __name__=='__main__': sigle_detect(hostList[0]) #--------------- mak_hostList_byip3(hostList) multi_detect(hostList) onLine=filter_gather(onLine) print(onLine) offLine=filter_gather(offLine) print(offLine) gathered=onLine+offLine print(gathered) update_hostDict(onLine, offLine) print(hostDict) fN=make_pickle_fileName() save_gathered(fN,hostDict) keyList=[] recovery_gathered(fN,keyList) print(keyList)

希望本文講述的方法對大家的Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图片| 竹溪县| 沂源县| 庐江县| 当涂县| 石林| 廉江市| 噶尔县| 黄浦区| 东丽区| 南和县| 安达市| 西乡县| 临沧市| 鄂伦春自治旗| 丰台区| 通道| 勐海县| 遂平县| 光山县| 翁牛特旗| 嵩明县| 海宁市| 宁武县| 建水县| 天长市| 九龙城区| 广元市| 上林县| 惠东县| 安徽省| 萨嘎县| 巴塘县| 东乡族自治县| 垦利县| 喀喇沁旗| 绥江县| 祥云县| 元阳县| 宽城| 驻马店市|