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. 学习lua-02,引入其他lua文件,调用全局方法

    local testlua = require "testlua" --testlua.compertoNum(1, 2, 4, 5, 11, 23, 543, 123, 45, ...

  2. 1.JavaScript的实现与由来

    1.一个JavaScript由不同的部分组成 核心(ECMAScript)以下简称ES 文档对象模型(DOM) 浏览器对象模型(BOM) ES就是JavaScript的语法层面 而DOM则是浏览器解释 ...

  3. 基于Python的简单读卡上位机界面

    使用到的模块,pyserial  pyqt5  pymysql (我先是实现在命令行下通过串口进行对板子硬件的控制,比如Led ,beep等,在实现检测卡(是否选卡成功),连接卡(验证哪一个扇区),读 ...

  4. 杭电OJ--1003题C++实现

    #include<iostream>using namespace std;int a[100000];void solve(int k,int n,int t);int main(){  ...

  5. idea 部署项目到 docker 运行

    1.在远程服务器上开启 docker 远程连接 $vim /usr/lib/systemd/system/docker.service # ExecStart=/usr/bin/dockerd -H ...

  6. java.io.IOException: Cannot run program "phantomjs": CreateProcess error=2, 系统找不到指定的文件

    一.问题 运行该指令的程序找不到phantomjs这个指令 二.解决 1.配置全局变量 注意!!! 要配置系统变量,只配置用户变量,可能还会出现该错误.ps:我就是只配置用户变量,导致一直出错... ...

  7. #硬件 #资讯 #科普 #短报 SSD价格跳水根本停不下来!不断刷出新低

    一份来自日本的统计显示,10~12月的初步统计显示,PC市场的指标产品中,256GB TLC颗粒SSD价格再次下跌2美元,现在只有29.5美元.这已经是该指标产品连续5个季度下跌,创下史上心底记录,同 ...

  8. Java基础Day5-数组

    一.数组声明创建 首先必须声明数组变量,才能在程序中使用数组. 声明数组变量的语法如下: dataType[] arrayRefVar; 例如: int[] nums; Java语言使用new操作符来 ...

  9. feign远程调用接口报空指针

    今天对feign接口进行转移的时候再次启动一直报空指针,找了好久试了好多次才发现是没有对feign接口加注解 请一定要记得加自动注入的注解啊啊啊啊啊啊!!!!!!!

  10. PLC入门笔记12

    1.边沿应用 (1)边沿开关 (2)上升沿触发 下降沿触发 (3) MOVP K4M0 D0 传送比较 movp (=mov) 脉冲型指令 前面条件成立只能执行一次,仅执行一次扫描周期 不带P MOV ...