zoukankan      html  css  js  c++  java
  • 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''{}
    ' 
                 '[+]loacl IP:{}
    ' 
                 '[+]A program running in the background:{}
    ' 
                 '[+]The user / system / idle time of statistical CPU:{}
    ' 
                 '[+]Disk I/O usage{}
    ' 
                 '[+]Last send time:{}
    ' .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的内存,然后通过邮箱发送‘

           到指定收件箱。

    运行截图:

  • 相关阅读:
    Eclipse consle 输出语句中,误输中文,假死问题
    Eclipse 快捷键 (最实用)
    mysql 4种启动方式
    mysql索引的类型和优缺点
    Windows上 使用Composer安装tp5
    php 更新配置文件
    可视化工具连接Linux上的redis
    HttpClient 4 教程 第3章 HTTP状态管理
    HttpClient 4 教程 第2章 连接管理
    HttpClient 4 教程 第1章 基础
  • 原文地址:https://www.cnblogs.com/haq5201314/p/8642123.html
Copyright © 2011-2022 走看看