前言:
一直想寫乙個監控方面的指令碼,然後想到了運維這方面的,後來就寫了個指令碼,下面話不多說了,來一起看看詳細的介紹吧。
準備:程式設計客棧
psutil模組(基本使用方法可以參考這篇文章:
正文: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|[1-9]?\d)\.(25[0-5]|2[0-4]\d程式設計客棧|[0-1]\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d|[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為運維人員寫乙個監控指令碼
本文位址: /jiaoben/python/223680.html
Python自動化運維(一)
1.系統效能資訊模組psutil cpu資訊psutil.cpu times 方法獲取cpu的完整時間資訊 psutil.cpu times percent 方法獲取cpu的完整百分比資訊 psutil.cpu count 獲取cpu數量 psutil.cpu percent 獲取cpu百分比資訊 ...
IT運維人員如何度過乙個輕鬆的假日
我們即將迎來乙個小長假,對於忙碌了大半年的it運維管理人員的來說,既期待又擔心 擔心假日會不會因為it系統故障被打擾或中斷?事實上我們的it管理人員很清楚,有些問題一旦出現,可能只有我們自己能解決,普通it值班人員很難獨自排除故障,因為如果我們不去現場梳理,很難清晰了解it系統架構和裝置的使用現狀,...
Python自動化運維學習(一)
我們要使用連線物件獲得乙個cursor物件,接下來,我們會使用cursor提供的方法來進行工作.這些方法包括兩大類 1.執行命令,2.接收返回值 cursor用來執行命令的方法 callproc self,procname,args 用來執行儲存過程,接收的引數為儲存過程名和引數列表,返回值為受影響...