热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python测试端口连通_python实现端口连通性检测

#-*-coding:utf-8-*-#!binenvpython#AUTHOR:karl#DATE:2018-1-19#VERSION:V1.0#################

# -*- 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()

配置文件:

python

[10.117.194.23]mysql

10.117.194.77,10.116.41.82,9920sql

10.117.194.77,10.116.47.12,1080shell

10.117.194.77,10.116.45.56,1081数据库

[10.117.194.24]app

10.117.194.78,10.116.41.82,9920ssh

10.117.194.78,10.116.47.12,1080ide

10.117.194.78,10.116.45.56,1081测试

10.117.194.78,10.116.145.33,8001orm

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

agent 直接用shell 实现.

数据库中效果

dd5ef58cdf34bfc5887e215bef67b5eb.png

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

1dabb24ae0fcee3b7da5aa9f3aab922c.png



推荐阅读
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • Git Bash 配置 SSH 免密登录及 Gitee SSH 密钥设置
    本文详细介绍了如何在 Git Bash 中配置 SSH 免密登录,并将生成的 SSH 密钥添加到 Gitee 账户中,以实现无需每次输入密码即可进行代码推送。 ... [详细]
  • Linux下MySQL 8.0.28安装指南
    本文详细介绍了在Linux系统上安装MySQL 8.0.28的步骤,包括下载数据库、解压数据包、安装必要组件和启动MySQL服务。 ... [详细]
  • 本文介绍了如何在GitHub上设置多个SSH Key,以解决原有Key失效的问题,并确保不同项目使用不同的私钥进行安全访问。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文详细解析了一种实用的函数,用于从URL中提取查询参数。该函数通过处理URL中的搜索部分,能够高效地获取并解析出所需的参数值,适用于各种Web开发场景。 ... [详细]
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
author-avatar
小王儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有