Home About BC DR HA Support Training Download
You are here: Home/ Downloads/ Scripts/ Korn/ Please Login or Register

-
Current Location
-

js
  Downloads
    Scripts
      Korn



-
 Mt Xia Inc.
-
BOOK:Advanced Shell Scripting



 Join our LinkedIn Group
AIX Advanced Technical Experts
Contract Opportunities

www.LinkedIn.com
-
 Train By Tweet
Training courses Tweet By Tweet
Various Subjects and Products
TrainByTweet.com


AIX Admin Methodology
Global Consolidation Project
All AIX admins should join
www.aixexpert.com
-

digg Digg this page
del.icio.us Post to del.icio.us
Slashdot Slashdot it!


AIX FREE DEMO UNIX
Automated AIX Deployment
Reduce your DC costs

www.siteox.com

LPAR Leasing
Lease an AIX / i5 LPAR
Reduce your costs

www.mtxia.com

Server Leasing
Lease a Server off-site
Reduce your costs

www.mtxia.com

Data Center Automation
Business Continuity and DR
Virtualization/Consolidation

www.mtxia.com

HMC Service
Hardware Management Console
Manage Remote AIX / i5 LPARs

www.siteox.com

Business Web Site Hosting
$3.99 / month includes Tools,
Shopping Cart, Site Builder

www.siteox.com

Disaster Recovery
Small Business Oriented
Off-Site Facilities

www.mtxia.com

IBM pSeries / iSeries
Reduce your Costs
Off-Site Server Hosting

www.mtxia.com

mkAtJob_k93

We have expert shell programmers currently available to assist your organization with complex shell scripting projects. We have developed business continuity, disaster recovery, high availability and virtualization systems entirely in shell scripts and we have the advanced technical skills to solve your problems as well. Please Contact Us for more information.



#!/usr/bin/ksh93
################################################################
function usagemsg_mkAtJob {
  print "
Program: mkAtJob

Description: Schedule a command to run sometime in the future via an
\"at\" job, by adding a specified number of days, hours, and/or minutes to
the current date/time.

Usage: ${1##*/} [-?vV] [-N] | [-t YYYYMMDDHHMM] | [ [-n #Secs|-s YYYYMMDDHHMM]
                       [-D DAYS] [-H HOURS] [-M MINUTES] ]
                       [-j] -c \"Command\"
  Where:
    -v = Verbose mode
    -V = Very Verbose Mode
    -D DAYS = Number of days from NOW to run the \"at\" job
                (Default:1)
    -H HOURS = Number of hours from NOW to run the \"at\" job
                (Default:0)
    -M MINUTES = Number of minutes from NOW to run the \"at\" job
                (Default:0)
    -n NOW = Number of Seconds since the epoch to use as the \"NOW\" date/time.
                (Default:NOW)
    -s YYYYMMDDHHMM = Date and time to use as the \"NOW\" date/time.
                (Default:None)
    -t YYYYMMDDHHMM = Run the \"at\" job at the specified date and time.
                (Default:None)
    -N = Run the \"at\" job using the keyword \"now\" as the time to run the Job.
    -j = Print the \"at\" job number on STDOUT after scheduling command
    -c Command = A unix command to schedule to run thru \"at\" job scheduler.

Example Usage:
    mkAtJob -D 2  -H 6  -M 30     -c \"cat /etc/passwd > /tmp/passwd.out\"
    mkAtJob -s 201309091103  -D 2 -c \"cat /etc/passwd > /tmp/passwd.out\"
    mkAtJob -t 201309091103       -c \"cat /etc/passwd > /tmp/passwd.out\"

Author: Dana French (dfrench@mtxia.com) Copyright 2013
\"AutoContent\" enabled
"
}

################################################################
#### Program: mkAtJob
#### 
#### Description: 
#### 
#### Author: Dana French (dfrench@mtxia.com)
#### 
#### Date: 09/11/2013
#### 
################################################################
function mkAtJob {
  typeset TRUE="0"
  typeset FALSE="1"
  typeset VERBOSE="${FALSE}"
  typeset VERYVERB="${FALSE}"
  typeset MKAT_CMD=""
  typeset MKAT_DAY="0"
  typeset MKAT_HRS="0"
  typeset MKAT_MIN="0"
  typeset MKAT_ADD="0"
  typeset MKAT_SEC="0"
  typeset MKAT_NOW=$( printf "%(%s)T\n" )
  typeset MKAT_TIM="${MKAT_NOW}"
  typeset MKAT_DTM="${MKAT_NOW}"
  typeset MKAT_NUM="${FALSE}"
  typeset MKAT_KEY="${FALSE}"
  typeset MKAT_TKY="${FALSE}"

  while getopts ":vVD#H#M#c:n:s:t:jN" OPTION
  do
    case "${OPTION}" in
        'D') MKAT_DAY="${OPTARG}";;
        'H') MKAT_HRS="${OPTARG}";;
        'M') MKAT_MIN="${OPTARG}";;
        'n') MKAT_NOW="${OPTARG}";;
        's') MKAT_NOW=$( printf "%(%s)T\n" ${OPTARG} );;
        't') MKAT_NOW=$( printf "%(%s)T\n" ${OPTARG} )
             MKAT_TKY="${TRUE}";;
        'c') MKAT_CMD="${OPTARG}";;
        'j') MKAT_NUM="${TRUE}";;
        'N') MKAT_KEY="${TRUE}";;
        'v') VERBOSE="${TRUE}";;
        'V') VERYVERB="${TRUE}";;
        '?') usagemsg_mkAtJob && return 1;;
    esac
  done
 
  shift $(( ${OPTIND} - 1 ))

################################################################
  trap "usagemsg_mkAtJob ${0}" EXIT
      
  if (( MKAT_NOW < MKAT_TIM ))
  then
      print -u 2 -- "# ERROR: The date/time specified is in the past."
      print -u 2 -- "# ERROR: Please specify a date/time in the future."
      return 2
  fi

  if [[ "_${MKAT_CMD}" == "_" ]]
  then
      print -u 2 -- "# ERROR: Command to schedule as \"at\" job not specified."
      return 3
  fi

  trap "-" EXIT

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

  (( VERYVERB == TRUE )) && VERBOSE="${TRUE}"
  (( VERBOSE  == TRUE )) && print -u 2 -- "###################################"
  (( VERYVERB == TRUE )) && set -x

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

  if (( MKAT_KEY == TRUE ))
  then
    MKAT_TIM="now"
  elif (( MKAT_TKY == TRUE ))
  then
    MKAT_TIM=$( printf "%(%Y%m%d%H%M)T\n" "#${MKAT_NOW}" )
    MKAT_TIM="-t ${MKAT_TIM}"
  else
    (( VERBOSE == TRUE )) && print -u 2 -- "# Current Seconds: ${MKAT_TIM}"
    (( VERBOSE == TRUE )) && print -u 2 -- "# Now Seconds....: ${MKAT_NOW}"

    (( MKAT_ADD = ( MKAT_DAY * 24 * 60 * 60 ) + ( MKAT_HRS * 60 * 60 ) + ( MKAT_MIN * 60 ) ))
    (( VERBOSE == TRUE )) && print -u 2 -- "# Seconds to add.: ${MKAT_ADD}"

    (( MKAT_SEC = MKAT_NOW + MKAT_ADD ))
    (( VERBOSE == TRUE )) && print -u 2 -- "# Future Time....: ${MKAT_SEC}"

    MKAT_TIM=$( printf "%(%Y%m%d%H%M)T\n" "#${MKAT_SEC}" )
    MKAT_TIM="-t ${MKAT_TIM}"
  fi

  (( VERBOSE == TRUE )) && print -u 2 -- "# Job Time.......: ${MKAT_TIM}"

  (( VERBOSE == TRUE )) && print -u 2 -r -- "# print -r -- \"${MKAT_CMD}\" | at ${MKAT_TIM}"

  if MKAT_OUT=$( print -r -- "${MKAT_CMD}" | at ${MKAT_TIM} 2>&1 )
  then
    if (( MKAT_NUM == TRUE ))
    then
      MKAT_JOB="${MKAT_OUT#* }"
      MKAT_JOB="${MKAT_JOB%% *}"
      (( VERBOSE == TRUE )) && print -u 2 -- "# Job Number.....: ${MKAT_JOB}"
      print -- ${MKAT_JOB}
    else
      (( VERBOSE == TRUE )) && print -u 2 -- "# Job Results....: ${MKAT_OUT}"
      print -- ${MKAT_OUT}
    fi
  fi

  return 0
}
################################################################
################################################################
################################################################

mkAtJob "${@}"

-
Schedule jobs using at
-
 


AIX FREE DEMO UNIX
Automated AIX Deployment
Reduce your DC costs

www.siteox.com

LPAR Leasing
Lease an AIX / i5 LPAR
Reduce your costs

www.mtxia.com

Server Leasing
Lease a Server off-site
Reduce your costs

www.mtxia.com

Data Center Automation
Business Continuity and DR
Virtualization/Consolidation

www.mtxia.com

HMC Service
Hardware Management Console
Manage Remote AIX / i5 LPARs

www.siteox.com

Business Web Site Hosting
$3.99 / month includes Tools,
Shopping Cart, Site Builder

www.siteox.com

Disaster Recovery
Small Business Oriented
Off-Site Facilities

www.mtxia.com

IBM pSeries / iSeries
Reduce your Costs
Off-Site Server Hosting

www.mtxia.com