python 测试端口连通_Python语言 实现端口连通性检测

本文主要向大家介绍了Python语言 实现端口连通性检测,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

# -*- coding: utf-8 -*-

#!/bin/env python

#AUTHOR:karl

#DATE:2018-1-19

#VERSION:V1.0

######################

import time

import os

import paramiko

import datetime

import sys

import MySQLdb

import threading

#######################################

#首次插入数据是REG=0,更新数据REG为其他

#######################################

REG=1

private_key = paramiko.RSAKey.from_private_key_file('/home/appdeploy/.ssh/id_rsa')

def Data_mysql(info):

try:

string=info

Pip=string.split(" ")[0]

Sip=string.split(" ")[1]

Dip=string.split(" ")[2]

Port=string.split(" ")[3]

Result=string.split(" ")[4].replace('\n','')

con = MySQLdb.connect(host='localhost',user="root",passwd="******",db="zabbix",port=3306,charset="utf8")

dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

cursor=con.cursor()

valuse=(dt,Result,Pip,Sip,Dip,Port)

if REG == 0:

sql="""INSERT INTO Balant_telnet

(create_time,telnet_result,telnet_physicalip,telnet_sourceip,telnet_desip,telnet_port)

VALUES (%s,%s,%s,%s,%s,%s) """

result=cursor.execute(sql,valuse)

else:

sql="""UPDATE Balant_telnet set

create_time='%s',telnet_result=%s where telnet_physicalip='%s' and

telnet_sourceip='%s' and telnet_desip='%s' and telnet_port='%s';"""

%(valuse)

result=cursor.execute(sql)

cursor.close()

con.commit()

con.close()

except MySQLdb.Error, e:

print "Error %d: %s" % (e.args[0], e.args[1])

sys.exit(1)

def check_port(value,content):

ager={}

ager[value]=content

ssh=paramiko.SSHClient()

try:

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(value,port=22,username='appdeploy',pkey=private_key,timeout=5)

cmd="sh /home/appdeploy/monitor.sh {value}".format(value=ager[ager.keys()[index]])

stdin,stdout,stderr = ssh.exec_command(cmd)

for file_d in stdout.readlines():

Data_mysql(file_d)

except:

result=cmd+','+'failed'+'\n'

ssh.close()

###################################

# 对配置文件进行参数解析

###################################

def get_parameter():

ager={}

value=[]

with open("monitor_config") as context:

for line in context:

while not "," in list(line):

host=line.strip()[1:-1]

value=[]

break

line=line.strip().split(",")

value=value+line

ager[str(host)]=value

return ager

if __name__ == '__main__':

threads=[]

parm=get_parameter()

files=range(len(parm.keys()))

for index,content in parm.items():

t = threading.Thread(target=check_port,args=(index,content))

threads.append(t)

for index in files:

threads[index].start()

for index in files:

threads[index].join()

配置文件:

[10.117.194.23]

10.117.194.77,10.116.41.82,9920

10.117.194.77,10.116.47.12,1080

10.117.194.77,10.116.45.56,1081

[10.117.194.24]

10.117.194.78,10.116.41.82,9920

10.117.194.78,10.116.47.12,1080

10.117.194.78,10.116.45.56,1081

10.117.194.78,10.116.145.33,8001

【】里面的IP 是物理IP,下面分别对应着应用的源IP,目标IP和测试端口号

agent 直接用shell 实现.

数据库中效果

在zabbix 中 加入对表中数据的监控。在zabbix 的mysql 模板中加入Balant 的监控项,也可以加入图像,我们最后的结果是要展示在grafana 上进行展示。为1就说明应用端口是正常运行。

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

table每行自动触发ajax,table.ajax.reload()成功后未触发:function()

简介我正在使用json,ajax和php进行datatables.net jquery服务器端处理。我可以单击行按钮,然后从数据库中删除该行。但是,该页面永远不会使用ajax.reload();刷新页面。问题此代码:console.log("success function data reache…

不同page页面选择不同页面模板的方法

仿制一个企业站的时候发现该站用了很多page页面,而且个别页面的样式不相同,同时区别于post文章页面,其实不同之处就在于每个页面的xhtmlcss的不同,关键是page模板选择的问题,恒宁总结了以下两种方法。 第一种&#xff…

jquer each 遍历的结果不显示 null_SpringBoot系列(三十一)- Thymeleaf如何用th:each 做条件遍历

步骤1:基于前面的知识点步骤2:先运行,看到效果,再学习步骤3:模仿和排错步骤4:TestController步骤5:普通遍历步骤6:带状态的遍历步骤7:结合 select步骤8:结合 单选框步骤9:完整的 test.html步骤10:重启测试步骤 1 : 基于前面的知识点本知识点是建立在上一…

python 属性描述符_Python属性描述符(二)

Python存取属性的方式特别不对等,通过实例读取属性时,通常返回的是实例中定义的属性,但如果实例未曾定义过该属性,就会获取类属性,而为实例的属性赋值时,通常会在实例中创建属性,而不会影响到类…

python3.6sysos_求大佬,这是什么情况啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Traceback (most recent call last): File "manager.py", line 13, in sys.exit(main()) File "manager.py", line 8, in main manager.run() File "/root/imooc/lib/python3.5/site-packages/flask_sc…

6个座位办公室最佳位置_四人办公室座次的首选最佳座位在哪儿

四人办公室虽然不再拥挤,但座次依然有好坏之分,首选最佳的座位应靠着窗户并不与门相对。选择一个好的座位,不仅有助于我们工作效率和工作质量的提高,还能帮助我们的事业运和财运得到提升。在大多数人较多的办公室里,并…

.Net学习笔记----2015-06-30(超市收银系统01-仓库类)

GUID: 产生一个不会重复的ID static void Main(string[] args){//产生一个不会重复的编号Console.WriteLine(Guid.NewGuid().ToString());Console.WriteLine(Guid.NewGuid().ToString());Console.WriteLine(Guid.NewGuid().ToString());Console.WriteLine(Guid.NewG…

python xml etree_python xml.etree解析xml

config.xml <?xml version"1.0" encoding"UTF-8"?>linux 30windows 201 &#xff0c;解析出xml文件的根元素 from xml.etree import ElementTree as ET treeET.parse(config.xml) roottree.getroot() 或者 &#xff08;从字符串中解析&#xff09;…

http协议报文体_HTTP协议扫盲(七)请求报文之 GET、POST-FORM 和 POST-FILE

ORACLE临时表空间总结临时表空间概念 临时表空间用来管理数据库排序操作以及用于存储临时表.中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入 ...web自学网站coursera 网站很多新的技术,都是大牛和牛大学的,和外国新…

Winform开发之ADO.NET对象Connection、Command、DataReader、DataAdapter、DataSet和DataTable简介...

ADO.NET技术主要包括Connection、Command、DataReader、DataAdapter、DataSet和DataTable等6个对象&#xff0c;下面对这6个对象进行简单的介绍&#xff1a;&#xff08;1&#xff09;Connection对象的主要功能是与数据库进行连接&#xff08;事物处理也使用此对象&#xff09;…

python电子英汉词典显示_python网页抓取之英汉字典

linux的字典本人实在用起来不舒服&#xff08;stardict挺不错的&#xff0c;但是界面好看些&#xff0c;功能简单易用就好了&#xff09; &#xff0c;在线翻译又得打开庞大的浏览器....就打算自己写个&#xff0c;但是时间有限&#xff0c;为了简单&#xff0c; 还是用python抓…

清空缓存的命令_超详细的mysql数据库查询缓存原理解析、涉及命令、流程分析等...

概述mysql查询缓存在数据库优化可以起到很大的作用&#xff0c;今天主要针对这一块做一个总结&#xff0c;下面一起来看看吧~一、缓存条件&#xff0c;原理MySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集&#xff0c;MySql在实现Query Cache的具体技术细…

python与tensorflow的关系_python – 在TensorFlow,Session.run()和Tensor.eval()之间有什么区别?...

如果你有Tensor t&#xff0c;调用 t.eval()相当于调用tf.get_default_session()。run(t)。 您可以将会话设置为默认值&#xff0c;如下所示&#xff1a; t tf.constant(42.0) sess tf.Session() with sess.as_default(): # or with sess: to close on exit assert sess is t…

和lua的效率对比测试_Unity游戏开发Lua更新运行时代码!

最近沉迷lua脚本热更&#xff0c;想说这个可以提高多少菜鸡的调试效率&#xff0c;找了网上好多文章&#xff0c;但是都不行&#xff0c;尝试了很久&#xff0c;并且自己测试和学习&#xff0c;写了一遍&#xff0c;勉强能热更了。下面记录一下热更Lua的过程。一、用来卸载表格…

nodejs cluster ip hash_redis集群架构了解一下?一致性hash了解吗?

在前几年&#xff0c;redis 如果要搞几个节点&#xff0c;每个节点存储一部分的数据&#xff0c;得借助一些中间件来实现&#xff0c;比如说有 codis&#xff0c;或者 twemproxy&#xff0c;都有。有一些 redis 中间件&#xff0c;你读写 redis 中间件&#xff0c;redis 中间件…

硬盘主分区和拓展分区

主分区,也称为主磁盘分区,和扩展分区、逻辑分区一样,是一种分区类型。主分区中不能再划分其他类型的分区,因此每个主分区都相当于一个逻辑磁盘(在这一点上主分区和逻辑分区很相似,但主分区是直接在硬盘上划分的,逻辑分区则必须建立于扩展分区中)。 1. 一个硬盘可以有1到3个主分…

python如何比较大小_python列表如何比较大小

python列表如何比较大小 发布时间:2020-09-22 13:58:58 来源:亿速云 阅读:59 作者:小新 这篇文章给大家分享的是有关python列表如何比较大小的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 Python中可以使用cmp()函数比较两个列表的大小。 c…

python 连接oracle_常用的Python库,给大家分享一下!

Tkinter———— Python默认的图形界面接口。Tkinter是一个和Tk接口的Python模块&#xff0c;Tkinter库提供了对Tk API的接口&#xff0c;它属于Tcl/Tk的GUI工具组。Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tcl(工具命令语言)是个宏语言&#xff0c;用于简化shell下复…

js 获取某年的某天是第几周

/**2 * 判断年份是否为润年3 *4 * param {Number} year5 */6 function isLeapYear(year) {7 return (year % 400 0) || (year % 4 0 && year % 100 ! 0);8 }9 /**10 * 获取某一年份的某一月份的天数11 *12 * param {Number} year13 * param {Number} month14 *…

python 前端学习_python学习之路7 前端学习3

1.页面布局PosTion :fixedTitle.left{float:left;}.right{float:right;}.head{height:58px;background-color:#3c3c3c;}.head .fontsquarl{width:120px;height:58px;background-color:#F22E00;line-height:58px;}.head .logosuqarl{width:120px;height:58px;background-color:#…