Python通过ssh登录实现报文监听
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登录实现报文监听的更多相关文章
- IOS第五天(2:用户登录,回车的监听(代理模式UITextFieldDelegate)) 和关闭键盘
*********用户登录,回车的监听(代理模式UITextFieldDelegate) #import "HMViewController.h" @interface HMVie ...
- Python:基于MD5的文件监听程序
前述 写了一个基于MD5算法的文件监听程序,通过不同的文件能够生成不同的哈希函数,来实现实现判断文件夹中的文件的增加.修改.删除和过滤含有特定字符的文件名的文件. 需求说明 需要实现对一个文件夹下的文 ...
- Oracle登录失败:监听程序当前无法识别连接描述符中请求的服务
Oracle11g下载地址:https://pan.baidu.com/s/1p3RwLUTAl1Ys4yXmXJ3OVQ 安装步骤视频链接:https://pan.baidu.com/s/1c0FC ...
- Python网络编程(epoll内核监听,多任务多进程)
OJBK 接着昨天的说 select模块内的epoll函数还没说 说完epoll和本地套接字套接字基本就没了 今天主要是多进程 理论性东西比较多 主要是理解 epoll ...
- python 操作ssh登录
import paramiko #创建SSH对象 ssh = paramiko.SSHClient() #把要连接的机器添加到known_hosts文件中 ssh.set_missing_host_k ...
- 「Python实用秘技06」逐行监听Python程序的内存消耗
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第6期 ...
- python paramiko ssh登录交换机执行命令
# encoding=utf-8 import paramiko import time client = paramiko.SSHClient() client.load_system_host_k ...
- Python 键盘鼠标监听
异想天开的想记录一下自己每天的键盘键位走向,于是就在网上搜索了一下相关的实现,然后就发现了一个第三方的库pyHook.封装的很好,我们只需要傻瓜式的调用里面的API就可以了. 下面是我在使用pyHoo ...
- 用Python监听鼠标和键盘事件
PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件.这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所 ...
- Java:基于MD5的文件监听程序
前述和需求说明 和之前写的 Python:基于MD5的文件监听程序 是同样的功能,就不啰嗦了,就是又写了一个java版本的,可以移步 python 版本去看一下,整个的核心思路是一样的.代码已上传Gi ...
随机推荐
- git 产生冲突的处理方式
理解你操作图形化的时候, git 在什么? 了解你在做的文件的git状态? 1. 添加文件 git add . -A git commit -m "your commit here" ...
- Java-ArrayList常用API
返回值 方法 用途 boolean add(E e) 将指定的元素追加到此列表的末尾. void add(int index, E element) 在此列表中的指定位置插入指定的元素. boolea ...
- 7种实现web实时消息推送的方案
做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里我帮他整理了一下几种方案,并简单做了实现. 什么是消息推送(pus ...
- python机器学习——决策树算法
背景与原理: 决策树算法是在各种已知情况发生概率的基础上通过构成决策树来求某一事件发生概率的算法,由于这个过程画成图解之后很像一棵树形结构,因此我们把这个算法称为决策树. 而在机器学习中,决策树是一种 ...
- 快学起来!python入门自学必看
记得刚开始学python的时候,各种买书各种找资料,最后发现资料找了一大堆,但都是东一块西一块,内容不全且不系统,无意间发现这个宝藏网站,真的是太全了,当作工具书,时不时的翻翻,总会发现一些惊喜.0基 ...
- 如何在Windows 10上使用VS2019 编译C
一.安装VS 2019 首先VS官网上下载免费的VS2019 community.我们的目的是在Windows上使用该软件编译C,如下图所示,把使用C++的桌面开发打上勾 二.创建.C 项目 1.打开 ...
- 关于uniapp的事件监听,使用uni.$once和uni.$on导致的重复监听
最近写项目的时候遇到个问题,就是在使用uniapp的事件监听器时出现重复监听问题.一开始我是用的uni.$on去监听事件,然后出现了重复的触发监听.百度了下,官方提示单次触发的建议使用uni.$onc ...
- OO_Lab0总结博客
OO_Lab0 问题描述 对表达式结构进行建模,将表达式中非必要的括号进行展开并化简. 设定的形式化表述(仅写出部分): 表达式 \(\rightarrow\) 空白项 [加减 空白项] 项 空白项 ...
- sqlserver 数据导入MySQL
sqlserver导出成Excel文件数据 为什么用Excel文件数据? sql文件不通用 CVS文件编码报错 text文件日期/时间戳报错 修改Excel文件中的日期字段 需要格式化日期字段为 yy ...
- 9.22 2020 实验 3:Mininet 实验——测量路径的损耗率
一.实验目的 在实验 2 的基础上进一步熟悉 Mininet 自定义拓扑脚本,以及与损耗率相关的设定:初步了解 Mininet 安装时自带的 POX 控制器脚本编写,测试路径损耗率. 二.实验任务 ...