python为运维人员打造一个监控脚本
0x00前言:
一直想写一个监控方面的脚本,然后想到了运维这方面的
后来就写了个脚本。
0x001准备:
psutil模块
0x02正文:
- import os
- import time
- import re
- import smtplib
- from email.mime.text import MIMEText
- from email.header import Header
- import socket
- import psutil
- while True:
- def jianca():
- print('[+]Write a port to a file')
- querys=os.popen('netstat -an').read()
- wsd=open('netstat.txt','w')
- wsd.write(querys)
- wsd.close()
- jianca()
- def swsd():
- global usd,ow
- wsd=open('netstat.txt','r')
- swd=wsd.read()
- odf=re.findall('(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d):(3389)',swd)
- usd=odf[0]
- print('[+]Query the IP address of a remote connection')
- df=usd[0],usd[1],usd[1],usd[3]
- wdst=".".join(df)
- ow=wdst+":"+usd[4]
- print(usd[0],'.',usd[1],'.',usd[2],'.',usd[3]+":",usd[4])
- swsd()
- def ipdw():
- global wdf,ip,timsd
- s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
- dw=s.connect(('8.8.8.8',80))
- ip=s.getsockname()[0]
- print('[+]loacl IP:',ip)
- wdf=os.popen('tasklist').read()
- timsd=time.strftime('%Y-%m-%d',time.localtime(time.time()))
- ipdw()
- def yunwei():
- global cput,cp
- cput=psutil.cpu_times()
- cp=psutil.disk_io_counters()
- yunwei()
- def stm():
- serder="搜狐邮箱@sina.cn"
- revw="收件箱@qq.com"
- zhengwen='[+]Query the IP address of a remote connection''{}\n' \
- '[+]loacl IP:{}\n' \
- '[+]A program running in the background:{}\n' \
- '[+]The user / system / idle time of statistical CPU:{}\n' \
- '[+]Disk I/O usage{}\n' \
- '[+]Last send time:{}\n' .format(ow,ip,wdf,cput,cp,timsd)
- msg=MIMEText(zhengwen)
- msg['From']=Header('你的搜狐邮箱@sina.cn')
- msg['TO']=Header('收件箱@qq.com','utf-8')
- sub="实时监控"
- msg['subject']=Header(sub,'utf-8')
- try:
- smtp=smtplib.SMTP()
- smtp.connect('smtp.sina.cn',25)
- smtp.login('搜狐邮箱@sina.cn','登录密码')
- smtp.sendmail(serder,revw,msg.as_string())
- print('[+]发送出')
- except Exception as g:
- print('[-]发送失败,原因:',g)
- stm()
- time.sleep(3600)
实现原理:首先获取端口状态,然后写人一个txt用正则提取出想要的IP和端口。
然后获取正在后台运行的程序。在获取CPU和磁盘I/O的内存,然后通过邮箱发送‘
到指定收件箱。
运行截图:
python为运维人员打造一个监控脚本的更多相关文章
- python自动化运维-编写rsync+sersync安装脚本实现文件实时同步
rsync+sersync组合可以实时监听目录的变化,实现实时同步数据. 具体安装教程可查看:http://www.osyunwei.com/archives/7447.html. 安装着实有些复杂, ...
- Linux运维人员如何学习python编程
Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...
- 《Python自动化运维之路》 业务服务监控(二)
文件内容差异对比方法 使用diffie模块实现文件内容差异对比.dmib作为 Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性比较强的HTML文档,与 Linux下的di ...
- 编写一个BAT脚本协助运维人员遇到问题时候调测数据库是否有效连接成功的操作攻略
简单摘要: 1.内网系统出现故障需要排查 2.运维人员不熟悉数据库操作,没法通过连接数据库和执行SQL语句的方式排查数据库及数据是否正常 3.解决方案:编写一个bat脚本,运维人员双击运行即可. ...
- 一切从“简”,解放IT运维人员
运维人的神技 运维既是个技术活儿也是个苦差事,而运维人员被期望有着无限的技能:主机.存储.网络.操作系统样样精通,而且还要会写SQL.shell.开发语言java..net.python等等,对业务更 ...
- python自动化运维笔记1 —— 系统性能信息模块psutil
一.系统基础信息模块 1.1 系统性能信息模块psutil psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率( ...
- 运维服务器手段(监控宝,Nagios,百度通告平台)
站在"巨人"的肩膀上运维 现实问题 之前在论坛看到一个运维工程师的帖子,内容如下: "现在的一个IT工作者最头疼的就是加班,秃顶的是IT工作者最多.单身的是IT工作者最多 ...
- [转]2016年linux运维人员必会开源运维工具体系
linux运维人员必会开源运维工具体系 说明:不同的技术人员,不同的阶段确定知识边界非常重要,否则,就像马拉车,不知道终点在哪,累死也达不到目标.例如拿8K要学多少,拿15K要学多少.一个新手也许只想 ...
- (转)2017年Linux运维人员必会开源运维工具体系
标签:操作系统 中间件 千里马 Linux 技能 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51ct ...
随机推荐
- js 滚动到一定位置导航定位在页面最顶部
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- java 学习第二天小练习
1.从控制台输入学员王浩3门课程成绩,编写程序实现 ChengJi (1)数学课和英语课的分数之差 (2)3门课的平均分 代码如下: p.p1 { margin: 0.0px 0.0px 0.0px ...
- supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境
开发环境介绍 在SuperVessel云上,我们为大家免费提供当前火热的caffe深度学习开发环境.SuperVessel的Caffe有如下优点: 1) 免去了繁琐的Caffe环境的安装配置,即申请即 ...
- HI3531uboot开机画面
startvo 0 36 13; startgx 0 0x88000000 1600 0 0 800 600; //startgx 0 0x88000000 2048 0 0 1024 768; se ...
- eclipse在线安装JBoss Tool过程
eclipse在线安装JBoss Tool过程 1.打开eclipse,依次点击"help--->Install New Software..." 2.再单击"Ad ...
- Caused by:java.sql.SQLException:ORA-00923
1.错误描述 Caused by:java.sql.SQLException:ORA-00923:未找到要求的FROM关键字 2.错误原因 拼接SQL语句时缺少FROM什么表,导致出错 3.解决办法 ...
- iOS - Core Animation 核心动画的使用
1.简单使用示例 1.1 时钟 QClockView.h @interface QClockView : UIView /// 创建时钟界面 + (instancetype)q_clockViewWi ...
- freemark声明变量,boolean,date,date日期格式转换成String类型的(五)
<br/>assign用来定义变量<#assign name="刘德华"><br/> 获取assign定义变量的值:${name} <br ...
- halcon c++ 异常处理
现象 Halcon导出的C++程序,try catch不到异常.在Halcon下可以正常Catch到异常. C++代码:try{ tuple_max(hv_Length, &hv_Max ...
- sql数据库设置自定义消息
第一步 EXEC sp_addmessage @msgnum = 50005 , @severity = 10 , @msgtext = '更新失败' , @l ...