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. css3 旋转 八仙桌

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. POJ--2386题C++实现

    本题利用深度遍历的穷竭搜索法进行解题,即对每一个元素都对其进行各个方向的深度遍历,穷尽其周围 #include<iostream>#include<cstdio>using n ...

  3. 关于JDK1.8 java HashMap的tableSizeFor的解析:一个数最近2的幂次数方法

    简介 一个数的最近2的幂次数,是java hashmap初始化方法指定容量里面对容量进行处理采用的方法 1.位运算符号介绍 符号 描述 运算规则 & 与 两个位都为1时,结果才为1 | 或 两 ...

  4. ASCII,unicode与utf-8的区别

    ASCII,unicode与utf-8的区别: ASCII码只有127个字母被编到计算机中,无法处理中文,ASCII 编码是 1 个字节 unicode是为了解决因各国标准不同而产生乱码的问题.uni ...

  5. react-signature-canvas 签名功能

    基于移动端需要扫码签名的功能,这里记录一下. 1.使用 react-signature-canvas 插件,npm i react-signature-canvas --save 2.此功能签名后生成 ...

  6. openlayers-1 下载及安装使用

    javascript - Import from in Openlayers - Geographic Information Systems Stack Exchange 在浏览器中运行开放层示例 ...

  7. vue2项目引入新版ant-design-vue报错问题

    vue2项目引入3.2.14版ant-design-vue会报1600多个编译错误,纯属版本问题,但3.2.14版本卸载会出错,需要删除项目重建,重建后搜索依赖ant-design-vue-fixed ...

  8. springboot 项目启动后访问不论什么请求的是spring的注册页面Please sign in Username || springboot禁用security

    解决方法: 1.在启动类上添加注解@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class}) 2.或者:@SpringB ...

  9. jsp第7个作业

      MailService package mail.service; import java.util.List; import mail.dao.DaoFactory; import mail.d ...

  10. 荔枝派Licheepi nano裸机移植ZLG_GUI和3D旋转立方体

    一:前言 以前申请到了荔枝派zero,在发了两个开箱贴后就放在一边吃灰了.后来又购买了荔枝派nano,刷了几个教程中的系统之后又放到一边吃灰了.虽然有屯板子的习惯,却没有使用板子的能力. 后来,经过断 ...