Python自动化ssh登录目标主机,实现报文长度length 0监听,并根据反馈信息弹窗报警;

代码比较简陋,后续记得优化改进。

#_*_coding:utf-8 _*_
#!/usr/bin/python import paramiko
import re
import sys
import win32api,win32con
import multiprocessing
import time
import logging #获取登录信息
def user_info_get():
global host_name
global user_name
global ssh_loadkey
global execmd host_name = 'xxx.xxx.xxx.xxx' #input("主机地址:")
user_name = 'xxxxx' #input("用户名:")
ssh_loadkey = 'xxxxx'#input("登录密码:")
execmd = 'sudo tcpdump -v ' '''
使用正则表达式,过滤出length为0,并报警
'''
def length_judge(original_tcp_length1):
original_tcp_length2=str(original_tcp_length1) #构造正则表达式
filter_way=re.compile("length\W*(\d*)")
#利用正则表达式过滤匹配length后的数字
filter_tcp_length=filter_way.findall(original_tcp_length2) #将列表中的字符转化为数字
filter_tcp_length = [ float(x) for x in filter_tcp_length ]
#遍历数据,查找length是否为0
#print(filter_tcp_length)
for i in filter_tcp_length:
#print(i)
if i == 0:
localtime = time.asctime( time.localtime(time.time()) )
#调用Windows系统告警
win32api.MessageBox(0,"发现length为0!!!", "告警!!!"+ localtime ,win32con.MB_ICONWARNING)
break def ssh_load():
global back_normal_info
global back_erro_info #创建SSH连接日志文件(只保留前一次连接的详细日志,以前的日志会自动被覆盖)
paramiko.util.log_to_file("paramiko.log")
# 创建SSH对象
s = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
s.connect(hostname=host_name, port=22, username=user_name, password=ssh_loadkey)
# 执行命令
stdin, stdout, stderr = s.exec_command (execmd) #execmd传的参数free也是命令
#如果执行sudo命令,要考虑到该命令是否需要密码验证的问题,如果需要就要进行服务器端免密设置
# stdin, stdout, stderr = s.exec_command ('ls')
stdin.write("Y") # Generally speaking, the first connection, need a simple interaction.
#一般来说,第一个连接,需要简单的交互。 stderr.channel.set_combine_stderr(stdout)
#打开log文件,如果没有便新创建,模式a+为追加模式
#log_file = open("message.log", "a+")
print('登录了吗') while True:
back_normal_info = stdout.readline()
if len(back_normal_info) == 0:
break
print(str(back_normal_info.strip()))
write_log_info()
length_judge(back_normal_info)
#关闭文件 client.close()
return stdout.channel.recv_exit_status() #返回错误信息
back_erro= stderr.readline() print(back_erro) # 关闭连接
s.close()
print('结束了吗') #def monitor_action():
#time.sleep(0.02)
#length_judge(back_normal_info) def write_log_info():
#打开log文件,如果没有便新创建,模式a+为追加模式
log_file = open("message.log", "a+")
#写入信息
log_file.writelines(back_normal_info)
#关闭文件
log_file.close() if __name__ == '__main__':
user_info_get()
ssh_load()

  

Python通过ssh登录实现报文监听的更多相关文章

  1. IOS第五天(2:用户登录,回车的监听(代理模式UITextFieldDelegate)) 和关闭键盘

    *********用户登录,回车的监听(代理模式UITextFieldDelegate) #import "HMViewController.h" @interface HMVie ...

  2. Python:基于MD5的文件监听程序

    前述 写了一个基于MD5算法的文件监听程序,通过不同的文件能够生成不同的哈希函数,来实现实现判断文件夹中的文件的增加.修改.删除和过滤含有特定字符的文件名的文件. 需求说明 需要实现对一个文件夹下的文 ...

  3. Oracle登录失败:监听程序当前无法识别连接描述符中请求的服务

    Oracle11g下载地址:https://pan.baidu.com/s/1p3RwLUTAl1Ys4yXmXJ3OVQ 安装步骤视频链接:https://pan.baidu.com/s/1c0FC ...

  4. Python网络编程(epoll内核监听,多任务多进程)

    OJBK    接着昨天的说 select模块内的epoll函数还没说  说完epoll和本地套接字套接字基本就没了 今天主要是多进程   理论性东西比较多  主要是理解         epoll ...

  5. python 操作ssh登录

    import paramiko #创建SSH对象 ssh = paramiko.SSHClient() #把要连接的机器添加到known_hosts文件中 ssh.set_missing_host_k ...

  6. 「Python实用秘技06」逐行监听Python程序的内存消耗

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第6期 ...

  7. python paramiko ssh登录交换机执行命令

    # encoding=utf-8 import paramiko import time client = paramiko.SSHClient() client.load_system_host_k ...

  8. Python 键盘鼠标监听

    异想天开的想记录一下自己每天的键盘键位走向,于是就在网上搜索了一下相关的实现,然后就发现了一个第三方的库pyHook.封装的很好,我们只需要傻瓜式的调用里面的API就可以了. 下面是我在使用pyHoo ...

  9. 用Python监听鼠标和键盘事件

    PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件.这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所 ...

  10. Java:基于MD5的文件监听程序

    前述和需求说明 和之前写的 Python:基于MD5的文件监听程序 是同样的功能,就不啰嗦了,就是又写了一个java版本的,可以移步 python 版本去看一下,整个的核心思路是一样的.代码已上传Gi ...

随机推荐

  1. 物联网5G工业网关的特点和应用场景

    BMG5100 系列产品,是一款工业级 5G 千兆物联网网关.集数据管理.智能采集.多种协议 转换.5G/4G 无线通信.数据处理转发.VPN 虚拟专网.本地存储.WIFI 覆盖等功能于一体. 产品特 ...

  2. 5G智慧灯杆系统在智慧街区的应用

    智慧化的路灯作为一个高度集成的项目,是智慧城市在城市公共空间的落地载体,是一个自上而下的体系,有外延.可扩展.能适配智慧城市的建设要求.在商业街开展智慧灯杆建设,同期开展5G应用技术试点,有利于商业街 ...

  3. Spring学习记事本

    原因:原因:Application的启动类不能放在默认的java目录,必须放在建有包的目录下.

  4. 在windows下使用dbus

    介绍 DBUS是一种很方便的IPC远程调用的通信机制.可以很方便地调用其他进程提供的函数,甚至是不同计算机上提供的函数,内部通过TCP套接字进行相互通信. 不过甚至你可以修改成其他通信方式,比如USB ...

  5. 显式等待(一)WebDriverWait类、until()方法

    转自: https://blog.csdn.net/zyooooxie/article/details/84422924

  6. JS通用公共函数

    function formatTime(time) { if (typeof time !== 'number' || time < 0) { return time } var hour = ...

  7. scala之函数式编程

    1.面相对象编程和函数式编程 2.函数和方法的区别 scala可以在任何的语法结构中声明任何的语法: scala中函数可以嵌套定义: scala中如果main内部的函数 和 main外部的函数名称.参 ...

  8. 字符串转换为Base64,作为token 传入到后台

    一.Base64 转换的方法 function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabc ...

  9. 20200925--矩阵加法(奥赛一本通P93 6 多维数组)

    输入两个n行m列的矩阵A和B,输出它们的和A+B 输入: 第1行包含两个整数n和m(1<=n<=100,1<=m<=100),表示矩阵的行数和列数. 接下来n行,每行m个整数, ...

  10. Jmeter-接口测试(二)

    鉴权码获取: 1.通过接口获取 appid secret  (第三方用户唯一凭证, 第三方用户唯一凭证秘钥) 2.登录之后自动生成 username,password 一.jmeter 接口关联 1. ...