はじめまして、ガンちゃんです。
こちらは、前回記事の続きです。
https://qiita.com/mugiGAN/items/1985e6b3eb4576569f35
本記事は、”CPU使用率10%未満になると、Gmailで知らせてくれる”という記事です。
お読みいただければ幸いです。
概要
本プログラムでは、CPU使用率10%未満になるとGmailで知らせてくれます。
前回はアラームだったので、外出中の場合終了したことが分かりません。
そこで、メールで報告してくれるようにしました。
Pythonを用いたGmail送信方法
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login("メールアドレス@gmail.com", "パスワード")
mail_from = "メールアドレス@gmail.com"
mail_to = "メールアドレス@gmail.com"
text = "CPU使用率が10%未満となりました。\n経過時間は、" + str(end_time) + "[sec]です。\n"
msg = MIMEText(text)
msg['Subject'] = "CPU使用率10%未満の連絡"
msg['From'] = mail_from
msg['To'] = mail_to
msg['Date'] = formatdate(localtime=True)
下記のリンクを参考にしました。
【Python】メール(Gmail)を送信する方法を解説:
https://www.learning-nao.com/?p=1765
プログラム全体
プログラムの全体は、下記になります。
処理内容として、
毎5秒ずつCPU使用率を取得し、10%未満になるまで行っていきます。
10%未満になると、まずコマンド上で経過時間と終了時CPU使用率を出力します。
最後に、GmailでCPU使用率10%未満と経過時間を報告し、プログラム終了です。
import psutil
import time
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
start = time.time()
while True:
time.sleep(5)
cpu = psutil.cpu_percent(interval=1)
print('cpu:', cpu)
if cpu < 10:
break
print('Finesh:')
end_time = time.time() - start
print('Time ', end_time)
print('CPU[%] ', cpu)
smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login("メールアドレス@gmail.com", "パスワード")
mail_from = "メールアドレス@gmail.com"
mail_to = "メールアドレス@gmail.com"
text = "CPU使用率が10%未満となりました。\n経過時間は、" + str(end_time) + "[sec]です。\n"
msg = MIMEText(text)
msg['Subject'] = "CPU使用率10%未満の連絡"
msg['From'] = mail_from
msg['To'] = mail_to
msg['Date'] = formatdate(localtime=True)
smtpobj.sendmail(mail_from, mail_to, msg.as_string())
最後に
PythonでGmailを送信するにあたり、Googlアカウントの設定が必要でした。
下記に参考にしたサイトを記載いたしました。
Pythonでメール(gmail)を送信できない場合の解決法
https://www.gocca.work/python-mailerror/
Googleアカウントの2段階認証を有効にする
https://www.howtonote.jp/google-account/2step-verify/index1.html
(修正)
Pythonでプログラミングを書いている場合、CPU使用率を見ずとも処理終了時にGmailで通知すればいいです。
上記のCPU使用率を取得している処理を消し、その部分に自身が行いたい処理を追加すれば実現可能だと思います。