利用python為運(yùn)維人員寫一個(gè)監(jiān)控腳本
前言:
一直想寫一個(gè)監(jiān)控方面的腳本,然后想到了運(yùn)維這方面的,后來(lái)就寫了個(gè)腳本,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。
準(zhǔn)備:
psutil模塊(基本使用方法可以參考這篇文章:http://www.dbjr.com.cn/article/65044.htm)
正文:
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="實(shí)時(shí)監(jiān)控"
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('[+]發(fā)送出')
except Exception as g:
print('[-]發(fā)送失敗,原因:',g)
stm()
time.sleep(3600)
實(shí)現(xiàn)原理:首先獲取端口狀態(tài),然后寫人一個(gè)txt用正則提取出想要的IP和端口。
然后獲取正在后臺(tái)運(yùn)行的程序。在獲取CPU和磁盤I/O的內(nèi)存,然后通過(guò)郵箱發(fā)送‘
到指定收件箱。
運(yùn)行截圖:



總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
手動(dòng)安裝python3.6的操作過(guò)程詳解
這篇文章主要介紹了如何手動(dòng)安裝python3.6,本文給大家?guī)?lái)了安裝步驟,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
Python代碼執(zhí)行時(shí)間測(cè)量模塊timeit用法解析
這篇文章主要介紹了Python代碼執(zhí)行時(shí)間測(cè)量模塊timeit用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Pandas sample隨機(jī)抽樣的實(shí)現(xiàn)
隨機(jī)抽樣,是統(tǒng)計(jì)學(xué)中常用的一種方法,本文主要介紹了Pandas sample隨機(jī)抽樣的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
Python實(shí)現(xiàn)用networkx繪制MultiDiGraph
這篇文章主要介紹了Python實(shí)現(xiàn)用networkx繪制MultiDiGraph方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
python安裝pandas庫(kù)不成功原因分析及解決辦法
Pandas是python中非常常用的數(shù)據(jù)分析庫(kù),在數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等領(lǐng)域經(jīng)常被使用,下面這篇文章主要給大家介紹了關(guān)于python安裝pandas庫(kù)不成功原因分析及解決辦法的相關(guān)資料2023-11-11
python數(shù)據(jù)可視化Pyecharts庫(kù)sankey修改桑葚圖顏色
這篇文章主要介紹了python數(shù)據(jù)化Pyecharts庫(kù)sankey修改桑葚圖顏色,文中有之前繪制桑葚圖教程鏈接,本文就來(lái)修改一下桑葚圖的顏色,有需要的朋友歡迎參閱借鑒2021-09-09
Python學(xué)習(xí)小技巧之利用字典的默認(rèn)行為
這篇文章主要給大家介紹了Python學(xué)習(xí)小技巧之利用字典的默認(rèn)行為的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05
Python裝飾器的執(zhí)行過(guò)程實(shí)例分析
這篇文章主要介紹了Python裝飾器的執(zhí)行過(guò)程,結(jié)合實(shí)例形式分析了Python裝飾器的原理、執(zhí)行過(guò)程及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-06-06

