0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Python】CPU使用率10%未満になるとGmailで報告

Last updated at Posted at 2022-06-28

はじめまして、ガンちゃんです。
こちらは、前回記事の続きです。
https://qiita.com/mugiGAN/items/1985e6b3eb4576569f35
本記事は、”CPU使用率10%未満になると、Gmailで知らせてくれる”という記事です。
お読みいただければ幸いです。

概要

本プログラムでは、CPU使用率10%未満になるとGmailで知らせてくれます。
前回はアラームだったので、外出中の場合終了したことが分かりません。
そこで、メールで報告してくれるようにしました。

Pythonを用いたGmail送信方法

cpu_email.py
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%未満と経過時間を報告し、プログラム終了です。

cpu_email.py
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())

Gmailに下図のようなメールが届きます。
email_report.png

最後に

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使用率を取得している処理を消し、その部分に自身が行いたい処理を追加すれば実現可能だと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?