Welcome, guest | Sign In | My Account | Store | Cart
###################################################################################################################

    import os
    import sys


    class Daemonize:
        """ Generic class for creating a daemon"""

        def daemonize(self):
            try:
                #this process would create a parent and a child
                pid = os.fork()
                if pid > 0:
                    # take care of the first parent
                    sys.exit(0)
            except OSError, err:
                sys.stderr.write("Fork 1 has failed --> %d--[%s]\n" % (err.errno,
                                                                  err.strerror))
                sys.exit(1)

            #change to root
            os.chdir('/')
            #detach from terminal
            os.setsid()
            # file to be created ?
            os.umask(0)

            try:
                # this process creates a parent and a child
                pid = os.fork()
                if pid > 0:
                    print "Daemon process pid %d" % pid
                    #bam
                    sys.exit(0)
            except OSError, err:
                sys.stderr.write("Fork 2 has failed --> %d--[%s]\n" % (err.errno,
                                                                  err.strerror))
                sys.exit(1)

            sys.stdout.flush()
            sys.stderr.flush()

        def start_daemon(self):
            self.daemonize()
            self.run_daemon()

        def run_daemon(self):
        """override"""
            pass

###################################################################################################################

    from Daemonize import Daemonize
    from email.MIMEText import MIMEText
    import os
    import smtplib
    from smtplib import SMTPException
    import time


     class WatchFile(Daemonize):

        def __init__(self, file_path, size_limit=15728640):
            self.file = os.path.realpath(file_path)
            print '---'
            assert os.path.isfile(self.file), '%s does not exist' % self.file
            print '+++'
            self.userhome = os.getenv('HOME')
            self.smtpserver = '*path-to-your-host*'
            self.recipient_list = ['recipient@domain']
            self.sender = 'sender@domain'
            self.file_size_limit = size_limit
            self.email_body = os.path.join(self.userhome, 'email-msg.txt')
            self.interval = 3600
            self.log_file = os.path.join(self.userhome, 'inboxlog.txt')

        def send_an_email(self):
           """Method to send email to the recipients"""
           email_body = open(self.email_body, 'r').read()
           msg = MIMEText(email_body)
           msg['Subject'] = 'Your email inbox has exceeded size !'
           msg['From'] = 'Inbox WatchDog'
           msg['Reply-to'] = None
           msg['To'] = self.recipient_list

           session_obj = smtplib.SMTP()
           session_obj.connect(self.smtpserver)
           try:
               session_obj.sendmail(self.sender, self.recipient_list, msg.as_string())
           except SMTPException:
                print "Unable to send emails."
           finally:
               session_obj.close()

        def watch(self):
            """Method to watch your inbox. This also logs the time when your 
               inbox was checked last."""
            current_file_size = os.path.getsize(self.file)
            if current_file_size > self.file_size_limit:
                self.send_an_email()
            f = open(self.log_file, 'a')
            f.write('Last checked on : %s' % time.asctime(time.localtime(time.time())))
            f.write('\n')
            f.close()

        def run_daemon(self):
            """Over ridden method from Daemonize.This starts the daemon."""
            while 1:
                self.watch()
                time.sleep(3600)


    if __name__ == '__main__':
        watchdog = WatchFile('path-to-your-inbox')
        watchdog.start_daemon()

Diff to Previous Revision

--- revision 2 2012-03-14 11:18:42
+++ revision 3 2012-03-26 14:54:26
@@ -51,12 +51,12 @@
 
 ###################################################################################################################
 
+    from Daemonize import Daemonize
+    from email.MIMEText import MIMEText
     import os
     import smtplib
     from smtplib import SMTPException
     import time
-
-    from Daemonize import Daemonize
 
 
      class WatchFile(Daemonize):
@@ -66,30 +66,46 @@
             print '---'
             assert os.path.isfile(self.file), '%s does not exist' % self.file
             print '+++'
+            self.userhome = os.getenv('HOME')
             self.smtpserver = '*path-to-your-host*'
             self.recipient_list = ['recipient@domain']
             self.sender = 'sender@domain'
             self.file_size_limit = size_limit
-            self.email_body = 'path-to-your-email-template'
+            self.email_body = os.path.join(self.userhome, 'email-msg.txt')
+            self.interval = 3600
+            self.log_file = os.path.join(self.userhome, 'inboxlog.txt')
 
         def send_an_email(self):
+           """Method to send email to the recipients"""
+           email_body = open(self.email_body, 'r').read()
+           msg = MIMEText(email_body)
+           msg['Subject'] = 'Your email inbox has exceeded size !'
+           msg['From'] = 'Inbox WatchDog'
+           msg['Reply-to'] = None
+           msg['To'] = self.recipient_list
 
-            email_body = open(self.email_body, 'r').read()
-            session_obj = smtplib.SMTP(self.smtpserver)
-            try:
-                session_obj.sendmail(self.sender, self.recipient_list,
-                                               email_body)
-            except SMTPException:
+           session_obj = smtplib.SMTP()
+           session_obj.connect(self.smtpserver)
+           try:
+               session_obj.sendmail(self.sender, self.recipient_list, msg.as_string())
+           except SMTPException:
                 print "Unable to send emails."
-            finally:
-                session_obj.close()
+           finally:
+               session_obj.close()
 
         def watch(self):
+            """Method to watch your inbox. This also logs the time when your 
+               inbox was checked last."""
             current_file_size = os.path.getsize(self.file)
             if current_file_size > self.file_size_limit:
                 self.send_an_email()
+            f = open(self.log_file, 'a')
+            f.write('Last checked on : %s' % time.asctime(time.localtime(time.time())))
+            f.write('\n')
+            f.close()
 
         def run_daemon(self):
+            """Over ridden method from Daemonize.This starts the daemon."""
             while 1:
                 self.watch()
                 time.sleep(3600)

History