1. 程式人生 > >python簡單實現伺服器資訊自動郵件傳送

python簡單實現伺服器資訊自動郵件傳送

1、背景

    As a tester,維護著測試環境10+臺伺服器,每臺伺服器上部署著若干個web應用,經常會出現伺服器的一些OOM,磁碟佔用100%,雖然有定期的一些指令碼做清理,但是依然會經常出現一些狀況,加之想用些小指令碼解決些問題,於是就開始整。

2、思路

      指令碼語言: 比較熟悉python,也挺喜歡python,那就python搞吧。

      大致過程: 在一臺伺服器上(且叫他master),執行python指令碼,去獲取每臺其他測試伺服器(叫他們slaves)的磁碟資訊,記憶體資訊,然後將執行結果郵件傳送到我的郵箱,再通過jenkins進行一些自動化排程,於是乎~不用登陸到伺服器,也能知道每臺伺服器的資訊了!

3、實現程式碼

      兩個指令碼,一個去獲取伺服器的資訊,另一個專門負責發郵件。

      execCommandBatch.py  故名思議,批量在伺服器上執行某個命令

#coding:utf-8
import subprocess
import re
import time


def execCommandForServers(ip,command):
	sshLogin="ssh [email protected]"+ip
	sshCommand=sshLogin+''' "'''+command+'''"'''
	res=subprocess.Popen(sshCommand,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
	#執行完命令,然後就是解析結果
	commandOut=res.stdout.readlines()
	return commandOut

#這裡command 設定成引數,如果需要執行其他的命令,也方便擴充套件。
def getResult(command):
	res=""
	ipList=[\
        '192.168.8.1','192.168.8.7',\
	'192.168.8.2','192.168.8.8',\
	'192.168.8.3','192.168.8.9',\
	'192.168.8.4','192.168.8.10',\
	'192.168.8.5','192.168.8.11',\
	'192.168.8.6','192.168.8.12',\
	]
	for ip in ipList:
		res+='\n'
		res+="["+ip+"]"
		execRes=execCommandForServers(ip,command)
		for line in execRes:
			res+=line
	return res

#print getResult('df -h')


檔案2

mail-memInfo.py
   

#coding:utf-8
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
import os
import execCommandBatch as mymodle
import time

#建立一個帶附件的例項
'''
msg = MIMEMultipart()

res=os.listdir(os.getcwd())
for i in range(0,len(res)):
	if res[i].endswith('zip'):
		att1 = MIMEText(open(res[i], 'rb').read(), 'base64', 'gb2312')
		att1["Content-Type"] = 'application/octet-stream'
		att1["Content-Disposition"] = 'attachment; filename='+res[i]
		msg.attach(att1)

'''
currentTime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 
mailText=mymodle.getResult('df -h')
msg=MIMEText(mailText,'plain','utf-8')



#加郵件頭
msg['to'] = '收件地址'
msg['from'] = '發件地址'
msg['subject'] = '測試環境伺服器-磁碟資訊-'+currentTime
#傳送郵件
try:
    server = smtplib.SMTP()
    server.connect('smtp.qq.com')
    server.login('發件地址','發件郵箱的密碼')#XXX為使用者名稱,XXXXX為密碼
    server.sendmail(msg['from'], msg['to'],msg.as_string())
    server.quit()
    print '傳送成功'
except Exception, e:  
    print str(e)
4、jenkins配置很簡單,增加一個job,配置上排程策略,然後執行這個python指令碼即可

5、執行效果



相關推薦

python簡單實現伺服器資訊自動郵件傳送

1、背景     As a tester,維護著測試環境10+臺伺服器,每臺伺服器上部署著若干個web應用,經常會出現伺服器的一些OOM,磁碟佔用100%,雖然有定期的一些指令碼做清理,但是依然會經常出現一些狀況,加之想用些小指令碼解決些問題,於是就開始整。 2、思路  

python 實現阿里雲VPS 郵件傳送測試

1.python SMTP 普通傳送郵件 #coding:utf-8   #強制使用utf-8編碼格式 import smtplib  #載入smtplib模組 from email.mime.text 

Python簡單實現ATM自動存取款機

# ATM後臺資料庫 id cipher name money ATMDataBase = [ {‘id’:‘001’,‘cipher’:‘123456’,‘name’:‘張三’,‘money’:1000}, {‘id’:‘002’,‘cipher’:‘123456’,‘name

利用Python實現報表的自動傳送,解放你時間去做更有意思的事情

前言 在日常工作中你可能因為每天都被各種各樣的資料資料報表搞得焦頭爛額,老闆的,運營的、產品的等等。而且大部分報表都是重複性的工作,這篇文章就是幫助大家如何用Python來實現報表的自動傳送,解放你的勞動力,可以讓你有時間去做更有意思的事情。 分享一個python資源分享交流學習解答

DNN的BP算法Python簡單實現

images 相等 1.0 [] 重要 work arange imp into BP算法是神經網絡的基礎,也是最重要的部分。由於誤差反向傳播的過程中,可能會出現梯度消失或者爆炸,所以需要調整損失函數。在LSTM中,通過sigmoid來實現三個門來解決記憶問題,用tenso

Python簡單實現產生隨機位數的密碼及註意事項小結

初學 需要 模塊 swd watermark cal raw 感謝 digits Python簡單實現產生隨機位數的密碼 #!/usr/bin/python#coding:utf-8#產生任意位數的隨機密碼import random,string #導入隨機數和字符串模

Python簡單實現Web服務器

Python 簡單web服務器實現 import socket import re import gevent from gevent import monkey monkey.patch_all()# 識別等待時間,讓協程切換 def client_handler(client_socket)

18、OpenCV Python 簡單實現一個圖片生成(類似抖音生成字母人像)

gaussian int read 。。 str gray clas range TE 1 __author__ = "WSX" 2 import cv2 as cv 3 import numpy as np 4 5 def local_threshold(i

基於SVM的python簡單實現驗證碼識別

save def lse highlight pro imp bubuko uac 如果 1. 爬取驗證碼圖片 from urllib import request def download_pics(pic_name): url = ‘http://wsbs

SGD/BGD/MBGD使用python簡單實現

while [1] python 批量 break pri 向量 梯度下降 其他 算法具體可以參照其他的博客: 隨機梯度下降: # coding=utf-8 ‘‘‘ 隨機梯度下降 ‘‘‘ import numpy as np # 構造訓練數據 x = np.arange

OneR演算法的Python簡單實現

OneR演算法就是,在已有資料中,根據具有相同特徵值的個體最可能屬於哪個類別進行分類。即取效果最好的那個特徵進行分類。 #-*- coding=utf-8 -*- # import numpy as np from sklearn.datasets import load_iris f

python簡單實現Kinesis方法

1.建立自己的應用目錄,cd進入目錄 2.Kinesis增加應用: cp ~/amazon-kinesis-client-python-master/samples/sample_kclpy_app.py . cp ~/amazon-kinesis-client-python-mas

python itchat實現微信自動回覆

本次使用圖靈機器人介面實現個人微信的自動回覆。 一:首先申請圖靈賬號 http://www.tuling123.com/ 申請完在後臺建立機器人 得到apikey 二: 使用python提供的itchat實現個人微信登入和自動回覆 (1)微信登入和訊息監聽 # -*- c

Python爬取天氣資訊並定時傳送給微信好友(異地戀神器)!!

效果 前言 中國天氣網: http://www.weather.com.cn/ 點選右上角的具體的天氣資料 想獲取哪個城市的天氣,就搜尋城市進行切換 這裡以青島為例 可以看到此時url為: http://www.weather.com.cn/weat

RabbitMQ系列之六 Spring RabbitMQ整合實現案例之 非同步郵件傳送

摘要:給使用者傳送郵件的場景,其實也是比較常見的,比如使用者註冊需要郵箱驗證,使用者異地登入傳送郵件通知等等,在這裡我以 RabbitMQ 實現非同步傳送郵件。 專案git地址:https://github.com/gitcaiqing/RabbitMQ-Email 1.專案結構 2.

python簡單實現學生管理系統

#!/usr/bin/env python # -*- coding: UTF-8 -*- # Author:Du Fei import os #學號,姓名,年齡,性別,身高 allStudentsList=[] #從檔案中讀取資料 def readFromFile(fileName): if

6.Spring RabbitMQ整合實現案例之 非同步郵件傳送

摘要:給使用者傳送郵件的場景,其實也是比較常見的,比如使用者註冊需要郵箱驗證,使用者異地登入傳送郵件通知等等,在這裡我以 RabbitMQ 實現非同步傳送郵件。 專案git地址:https://github.com/gitcaiqing/RabbitMQ-Ema

常見資料探勘演算法和Python簡單實現

1、K近鄰演算法 原理:計算待分類樣本與每個訓練樣本的距離,取距離最小的K個樣本,這k個樣本,哪個類別佔大多數,則該樣本屬於這個類別。 優點:1、無需訓練和估計引數,2、適合多分類,3、適合樣本容量比較大的問題 缺點:1、對測試樣本記憶體開銷大,2、可解釋性差,無法

Python簡單實現表白藏頭詩

匯入資料資料分行存在很多空行長度為24和16的行可能是正確的詩句(分別對應五言和七言)部分長度正確的行,可能是目錄行,標題等,需要仔細甄別資料清洗203 秦川雄帝宅,函谷壯皇居。綺殿千尋起,離宮百雉餘。 24204 連薨遙接漢,飛觀迥凌虛。雲日隱層闕,風煙出綺疏。 24206

Python簡單爬取景點資訊

前言 網路爬蟲是為了獲取網際網路上的海量資訊資料,在互聯大資料加持的背景下,對資料合理利用成為了推動網際網路發展的原動力。對個人而言,可以利用爬蟲工具來獲取自己想要的資料資訊。海量的網際網路資料如何篩選到自己想要的,並且有價值的呢,這裡借取python的網路爬蟲模組來實現景點資訊爬取,進而獲取收