Create Script Category

Before you create a script, you must first create a Script Category so that you can add the script to it.

  1. Go to Automation > Scripts.
  2. In the All Scripts tab, click Add Category.
  3. In the Create Script Category page, enter the following details.
    • Select the Category Type: Local Category/Client Specific Category
    • Provide name to the Category.
  4. Click Save.

After the Category is created, it is listed under AllScripts or MyScripts tab.

Reporting apps

Create Scripts

Avoid running an agent-configured task with an output of more than 64KB as the script output is limited to 64KB.

  1. Go to Automation > Scripts.
  2. Select the script category for which you want to create a script from the All Scripts tab.
  3. Click to the Add Script symbol.
    Reporting apps
  4. In the Create Script page, Enter the following details:
    • Select a Category from the drop-down.
    • Select the Script Type from the drop-down and enter the Command/File Name.
    • If a scripting language is provided as an execution type, for example VBS, copy the script in the Script section.
    • Choose the Platform.
    • Provide name to the script.
  5. Click Add Params.
  6. In the Parameters section, define the runtime parameter that require this script.
  7. Click Save.

After a script is created, it is listed under the Category tab.

Reporting apps

Apply Scripts

  1. Click the script.
  2. Click Apply script to devices.
    Reporting apps
  3. Select the Client Name, Group Name, and Devices from the list.
    The Group Name can be filtered by Device Types or Resource Groups.
    • To run the script instantly, click Run Now.
    • To schedule a script, click Schedule. Provide scheduled time for the script and click Save.
  4. You can see the details of the applied scripts from the Scheduled Script page.
    patch management

Example Custom Scripts

The following example scripts create custom jobs.

Custom job using VBS

  • Category: Firewalls
  • Command/FileName: firewall_disable.vbs
  • Description: Disable Firewall
  strComputer = "."
  Set objWMIService = GetObject _
        ("winmgmts:{authenticationLevel=pktPrivacy}\\" _
          & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
        ("Select * from Win32_Processor")
For Each objItem in colItems
        Wscript.Echo "DeviceID : " & _
          objItem.DeviceID
        Wscript.Echo "CPU Usage in Percent : " & _
          objItem.LoadPercentage
        Wscript.Echo "Name : " & _
          objItem.Name
Next

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

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"
 }