Python实现根据指定端口探测服务器/模块部署的方法


Posted in Python onAugust 25, 2014

本文实例讲述了Python实现根据指定端口探测服务器/模块部署的方法,非常具有实用价值。分享给大家供大家参考借鉴。

有些时候,在维护过程中,服务器数量非常多。应用模块部署在不同服务器上。有时维护人员做了模块迁移,而未及时同步至手册中。查找比较困难。于是,产生Python根据应用端口进行探测,获取模块部署。

设想非常简单:通过简单的tcp链接,如果能够成功的建立,立即断开,防止影响业务。表示模块在某服务器上有部署。

具体功能代码如下:

#!/bin/env python
#
import socket
import time
from threading import Thread

hostList=["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.close

def 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 gather

def 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 hostList
def update_hostDict(onLine, offLine):
 hostDict["onLine"]=onLine
 hostDict["offLine"]=offLine

def make_pickle_fileName():
 import time
 fileName=""
 for s in time.localtime()[:5]:
 fileName=fileName+str(s)
 fileName="Host_%s.pkl" % fileName
 return fileName

def 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()
  break

if __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程序设计有所帮助。

Python 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
35个Python编程小技巧
Apr 01 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
python实现简易动态时钟
Nov 19 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
Python实现Singleton模式的方式详解
Aug 08 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
Apr 26 Python
python的launcher用法知识点总结
Aug 07 Python
简述python四种分词工具,盘点哪个更好用?
Apr 13 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 Python
python的类变量和成员变量用法实例教程
Aug 25 #Python
Python写的创建文件夹自定义函数mkdir()
Aug 25 #Python
Python中的startswith和endswith函数使用实例
Aug 25 #Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 #Python
Python对小数进行除法运算的正确方法示例
Aug 25 #Python
Python实现的一个自动售饮料程序代码分享
Aug 25 #Python
Python中请使用isinstance()判断变量类型
Aug 25 #Python
You might like
怎样辨别一杯好咖啡
2021/03/03 新手入门
JS实现php的伪分页
2008/05/25 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php生成动态验证码gif图片
2015/10/19 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
Python找出最小的K个数实例代码
2018/01/04 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
Python的Lambda函数用法详解
2019/09/03 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
影视动画专业个人的自我评价
2013/12/31 职场文书
初级会计求职信范文
2014/02/15 职场文书
感恩教育月活动总结
2014/07/07 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js