以前、pythonでプロセスを監視しておき、いなくなったらgmail使ってメール送信をやりました。

もはやpython 2はオワコンですので、python 3に対応したコードを記載します。

あわせて読みたい:

 

また、前はwhile文での実行でしたがプロセスを常に起動しておくのはいただけないのでcronでの実行を想定したものに変更しました。

まず実行するスクリプト(check_process_to_gmail.py)です。”keyword”を、プロセス名に含まれているべき文字に変更してください。

# coding: utf-8
import subprocess
import sendGmail


keyword = "hogehoge"
cmd = "ps ax | grep " + keyword + " | grep -v grep | wc -l"
from_addr = "FROM_ADDR@gmail.com"
passwd = "FROM_PASS"
to_addr = "TO_ADDR@gmail.com"
title = arg + " end."
body = ""
try:
    # result should be proess count string
    result = subprocess.check_output(cmd, shell=True).decode("utf-8").strip()
if result != "2":
    body = keyword + " process count was " + result + "!!!!"
except Exception as e:
    body = str(e.args)

if body != "":
    msg = sendGmail.create_message(from_addr, to_addr, title, body)
    sendGmail.send_via_gmail(from_addr, to_addr, passwd, msg)

sendGmail.pyは以下のようになります:

# coding: utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formatdate


def create_message(from_addr, to_addr, subject, body):
    msg = MIMEText(body)
    msg["Subject"] = subject
    msg["From"] = from_addr
    msg["To"] = to_addr
    msg["Date"] = formatdate()
    return msg


def send_via_gmail(from_addr, to_addr, passwd, msg):
    s = smtplib.SMTP("smtp.gmail.com", 587)
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login(from_addr, passwd)
    s.sendmail(from_addr, [to_addr], msg.as_string())
    s.close()

 

そしたら、1分毎にチェックしたい場合はcrontabで例えば以下のように設定します:

*/1 * * * * python3 /path/to/check_process_to_gmail.py

以上です。

前よりはきれいなコードになってるかなー

関連記事

fitbitの睡眠スコアを90弱で安定させる良い睡眠を続ける簡単な方法

m1 ipad pro 12.9 2021のusb-cハブはコレがベスト

Time Machine不要!Macを11.2.3にダウングレードして原神をm1 macbook airでプレイする

MH-Z19CとM5StickCで二酸化炭素濃度モニタリング

【神軽量HMD】Avegant Glyph 改造: 瓶詰堂さんのaltglyphを作った

PC、iPad、Android、switchもドックいらず!あまりに万能なusb-cハブが最強だった

コメント

コメントを返信する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です