以前、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

以上です。

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

関連記事

echo spotでスマホを持ってない人とテレビ電話をする方法

MiSTEL BAROCCO MD650Lをbluetooth接続にしてmobilityを爆上げ

MiSTEL BAROCCO MD650Lを持ち運びやすくするマグネット足を作った

MiSTEL BAROCCO MD650Lレビュー: 左右分離型ロープロのメカニカルキーボード

workaround for a Orange PI problem USB WiFi with Armbian cannot be found from network

中華系防水bluetoothイヤホンでちゃんと防水できたのは1社だけだった

コメント

コメントを返信する

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