そこで、0 バイトを超えるファイルが検出されるたびにシステム コマンドを実行する非常に小さな Python スクリプトを作成しました。実行する cronjob をスケジュールしようとしましたが、何らかの理由で機能しません。何が間違っていますか??
Python スクリプト (/usr/local/bin/urlEmail.py):
#!/usr/bin/env python
import os
changes = os.stat("/usr/local/bin/changes.txt")
if changes.st_size > 0:
os.system('ssmtp email@email.com < changes.txt')
(現在、changes.txt は静的で、テスト用にいくつかのテキストが含まれています)
root ユーザーの crontable -e に追加:
*/1 * * * * urlEmail.py
/var/log/syslog を見ると、次のように表示されます。
Jun 13 07:09:01 Server CRON[20901]: (root) CMD (urlEmail.py)
Jun 13 07:09:02 Server sSMTP[20902]: Sent mail for root@email.com (221 domain.domain.com closing connection) uid=0 username=root outbytes=577
また、「urlEmail.py」を実行するだけで、期待どおりのメールが届きますが、ログ メッセージは次のとおりです。
Jun 13 07:17:07 Server sSMTP[20952]: Sent mail for root@email.com (221 domain.domain.com closing connection) uid=0 username=root outbytes=352
2 つのログ メッセージ間で変更された唯一の点は、'urlEmail.py' を自分で実行した場合の outbytes 値が異なることです。
cron が (1 分に 1 回) 実行されると、メールがまったく届きません。