Example of Custom Scripts

The following example scripts create custom jobs.

Custom job using Powershell

  • Category: Quick Books Maintenance
  • Command/FileName: RestartQuickBooksService.ps1
  • Description: RestartQuickBooksService
 $service = Get-Service | where {$_.Name -like "QuickBooksD*" -or $_.DisplayName -like "QuickBooksD*" -or $_.Name -like "QBCF*"}
 if($service.Count)
 {
 Restart-Service -DisplayName $service[0].DisplayName
 write-host $service[0].DisplayName " Service Restarted"
 Restart-Service -DisplayName $service[1].DisplayName
 write-host $service[1].DisplayName " Service Restarted"
 }
 elseif($service )
 {
 Restart-Service -DisplayName $service.DisplayName
 write-host $service.DisplayName " Service Restarted"
 }
 else
 {
 write-host " QuickBooks service Not available"
 }

Custom job using Python

Get last logged user:

Category: Linux Command/FileName: python Description: Get last logged user

#! /usr/bin/env python
    import os, re, pwd, sys, time, struct, commands
 from datetime import datetime
 def executeCommand(cmd, args=[], ignoreOnError=True):
      for arg in args:
            cmd = cmd + ' ' + str(arg)

      try:
            result = commands.getstatusoutput(cmd)
      except Exception, errmsg:
            return 1, 'Exception caught - ' + str(errmsg)
      if result[0] != 0 and ignoreOnError == False:
          raise Exception("Failed to execute command: " + cmd)
      return result[0] >> 8 , result[1]
 def formatDateTime(dateStr):
      try:
            ''' 
                ****** Tue Feb  7 10:52:12 IST 2012 ******
                %Y-%m-%d %I:%M%p           => 2012-02-07 10:20AM
                %Y-%m %a%I%p               => 2012-02 Tue10AM
                %e%b%y                     =>  7Feb12 *Not added in Array*
                %d%b%y                     => 07Feb12
                %Y %m %d                   => 2012 02 07
                %d/%m/%y                   => 07/02/12
                %m/%d/%Y %H:%M:%S          => 02/07/2012 10:53:26
                %Y/%m/%d %H:%M:%S %Z       => 2012/02/07 10:53:26 IST
                %a %b %d %H:%M:%S %Z       => Tue Feb 07 10:56:35 IST
                %a %b %d %H:%M %Y %Z       => Tue Feb 07 10:53 2012 IST
                %a %b %d %H:%M:%S %Y %Z    => Tue Feb 07 11:12:48 2012 IST
                %a %b %d %H:%M %Y          => Tue Feb 07 10:53 2012
                %a %b %d %H:%M:%S %Y       => Tue Feb  7 11:12:48 2012
                %a %d %b %Y %I:%M:%S %p %Z => Tue 07 Feb 2012 10:57:12 AM IST
                %Y-%m-%d %Z                => 2012-02-07 IST
                %Y-%m-%d %H:%M %Z          => 2012-02-07 10:58 IST
                %m/%d/%y %H:%M %p %Z       => 2/7/12 10:58 AM IST
          '''
            try_formats = ['%Y-%m-%d %H:%M %Z', '%Y-%m-%d %Z', '%a %d %b %Y %I:%M:%S %p %Z', '%a %b %d %H:%M:%S %Y %Z', '%a %b %d :%H:%M:%S %Z', '%a %b %d %H:%M %Y %Z', '%Y/%m/%d %H:%M:%S %Z', '%d/%m/%y', '%Y %m %d', '%Y-%m %a%I%p', '%d%b%y', '%Y-%m-%d %I:%M%p', :'%m/%d/%y %H:%M %p %Z', '%a %b %d %H:%M %Y', '%a %b %d %H:%M:%S %Y', '%m/%d/%Y %H:%M:%S']
    UTC_OFFSET_TIMEDELTA = datetime.utcnow() - datetime.now()
            parsed = None
            for tformat in try_formats:
                try:
                    if sys.version_info >= (2, 6):
                          parsed = datetime.strptime(dateStr, tformat)
                    else:
                          parsed = datetime(*(time.strptime(dateStr, tformat)[0:6]))
                    break
              except:
                    pass
          if parsed != None:
                result_utc_time = (parsed - UTC_OFFSET_TIMEDELTA).strftime('%F %T')
            return result_utc_time
      except:
          return dateStr
 def parseLastLogRecord(llfile, uid, preserve = False):
      """ Returns [int(unix_time), string(device), string(host)] from the lastlog formatted file object, set preserve = True to preserve :your position within the file"""
      """
            LastLogFormat
            x86_64 : =L32s256s
            i386   : =L32s256s or L32s256s
            ia64   : ?
            Reference : [http://code.activestate.com/recipes/496768-last-login-record-extraction](http://code.activestate.com/recipes/496768-last-login-record-extraction)
        """
      position = llfile.tell()
      recordsize = struct.calcsize('=L32s256s')
      llfile.seek(recordsize * uid)
      data = llfile.read(recordsize)
      if preserve:
            llfile.seek(position)
      try:
            returnlist =  list(struct.unpack('=L32s256s',data))
            returnlist[1] = returnlist[1][:returnlist[1].index('x00')]
            returnlist[2] = returnlist[2][:returnlist[2].index('x00')]
            #returnlist[1] = returnlist[1].replace('x00','')
            #returnlist[2] = returnlist[2].replace('x00','')
            return returnlist
      except:
              return False
 def getLastLoggedUserDetails():
      lastlogfile = '/var/log/lastlog'
      lluser = lldate = ""
      if os.path.exists(lastlogfile):
            try:
                llfile = open(lastlogfile, 'r')
          except:
                logger.error("getLastLoggedUserDetails: Unable to open lastlog file")
            llts = 0
            try:
                for user in pwd.getpwall():
                      record = parseLastLogRecord(llfile, user[2])
                      if record and record[0] > 0:
                          ''' Order by time to get the last logged used details '''
                          print '%16stt%st%s' % (user[0], time.ctime(record[0]), record[2])
                          if llts < int(record[0]):
                              lluser = user[0]
                              llts = int(record[0])
                      elif record:
                          ''' The user never logged into the device '''
                          continue
                          #print '%16st\tNever logged in' % (user[0],)
          except:
              pass
            llfile.close()
            lldate_string = time.ctime(llts) + " " + time.tzname[0]
            lldate = formatDateTime(lldate_string)
            return lluser, lldate
      else:
            lastlogArr = executeCommand("last | head")[1].split("\n")
            for lastlog in lastlogArr:
                  lastlog = lastlog.strip()
                matchObj = re.match(r"^(\S+)\s+\S+\s+\S+\s+(\S+\s+\S+\s+\S+\s+\S+)\s+.*", lastlog, re.M|re.I)
                    if matchObj:
                      lluser = matchObj.group(1)
                      lldateStr = matchObj.group(2)
                      try:
                            lldateStr = lldateStr + " " + str(time.localtime().tm_year) + " " + time.tzname[0]
                      except:
                          pass
                      lldate = formatDateTime(lldateStr)
                        if lluser != 'reboot':
                            break
             return lluser, lldate
 lastloggeduser, lastloggedtime = getLastLoggedUserDetails()
 print
 print "Last Logged User: " + lastloggeduser
 print "Last Logged Time: " + lastloggedtime
 dtime