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 ...
随机推荐
- URL Scheme获取
支付宝链接或小程序获取URL Scheme 小程序(以行程卡小程序为例): URL解码https://c.runoob.com/front-end/695/ JS网址解码https://jsrun.n ...
- 【相关杂项】stdio.h中的sprintf函数/union的作用
1.定义int sprintf(char *str, const char *format, ...) 1.paras:*str:目标字符串首指针 *format:要写入目标字符串的 ...
- 【PDF】数理科学 2001年01月号 特集:「時間とは何か」- 時間が生んだ世界観とパラダイム -
书本详情 标题:数理科学 2001年01月号 特集:「時間とは何か」- 時間が生んだ世界観とパラダイム - | 数理科学編集部 | 年份:2001出版社:サイエンス社ISBN10:暂无信息5ISBN1 ...
- .netcore 跨域问题
CORS(跨域资源共享)是一种W3C标准,允许服务器放宽同源策略.使用CORS,服务器可以在显式允许某些跨域请求时拒绝其他跨域请求.CORS是相比其他跨域技术(比如JSONP)更安全.更灵活. ASP ...
- linux火狐添加flash插件
从官网上 adobe flash player 全版本通用安装 找到 linux 版本的 .gz 包, 复制下载链接 linux命令 su - cd /tmp wget -P /tmp https: ...
- MySQL8.0使用GROUP BY的问题
当使用group by的语句中,select后面跟的列,在group by后面没有时,会报以下错误: Expression #2 of SELECT list is not in GROUP BY c ...
- layui.dtree的学习,自定义扩展toolbar按钮(toolbarExt)
学习layui.dtree请前往 http://www.wisdomelon.com/DTreeHelper/ 记录一下dtree的自定义扩展toolbar按钮(toolbarExt) html代码: ...
- 更改yum源
1)cd /etc/yum.repos.d/ 2)wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/C ...
- Android adb命令 安装
adb的全称为Android Debug Bridge.是android司机经常用到的工具. 查看本地adb版本 打开cmd 命令:adb version 显示adb版本.如果显示不是内部或者外部命令 ...
- IDEA Maven 项目报错 java: 程序包org.springframework.beans.factory.annotation不存在
idea 刚把项目导进去的时候,点击运行,import的好多包都报红,所有的文件的Maven依赖包都没导入进去. 但只是第一个报错是: java: 程序包org.springframework.bea ...