#!/bin/bash T=/tmp/$$ trap 'rm -fr $T' 0 1 2 3 4 5 6 7 8 10 12 13 14 15 mkdir $T name="$(basename $0)" getopt -T if [ $? -ne 4 ]; then echo "current version of getopt shell command required" echo "getopt shell command version is $(getopt --version)" exit 2 fi eval set -- $(getopt -n "$name" -o ':c:s:e:j:n:u:a:q:x:l:hS' -- "$@") error=0 help=0 while [ $# -gt 0 ]; do case $1 in (-c) cluster="$2"; needClusters=1; shift;; (-s) start="$2"; needLogs=1; shift;; (-e) end="$2"; needLogs=1; shift;; (-j) job="$2"; shift;; (-n) node="$2"; needNodes=1; shift;; (-u) user="$2"; needUserDetails=1; shift;; (-a) account="$2"; needAccountDetails=1; shift;; (-q) queue="$2"; needQueueDetails=1; shift;; (-x) exitcode="$2"; needExitCodeDetails=1; shift;; (-l) logCodes="$2"; needLogs=1; shift;; (-h) help=1;; (-S) showSQL=1;; (--) shift; break;; (-*) error=1; echo "${name}: unrecognized option $1" 1>&2; shift;; (*) break;; esac shift done for f; do error=1; echo "${name}: unrecognized option $f" 1>&2 done if [ "$start" ]; then Start="$(getdate in mm slash dd slash ccyy thh colon tmm colon tss, $start)" if [ "$Start" == "error" ]; then error=1 echo "start $start is invalid" else echo "Start: $Start" fi fi if [ "$end" ]; then End="$(getdate in mm slash dd slash ccyy thh colon tmm colon tss, $end)" if [ "$End" == "error" ]; then error=1 echo "end $end is invalid" else echo "End: $End" fi fi if [ "$help" != "0" -o "$error" != "0" ]; then echo "Usage: ${name} [-c cluster] [-s startTime] [-e endTime] [-j jobNumber]" echo " [-n node] [-u user] [-a account] [-q queue] [-x exitCode ]" echo " [-h] [-S]" echo "" echo "start and end times: whatever getdate accepts without error" echo " at least the following are accepted: mm/dd/yyyy hh24:mi:ss," echo " yesterday [hh24:mi:ss] and [hh24:mi:ss]." echo "" echo "jobNumber: single job number" echo "" echo "node: single node name" echo "" echo "user: single user name" echo "" echo "account: single account name" echo "" echo "queue: single name name" echo "" echo "exitCode: decimal number or !0" echo "" echo "-h or an error produces this text" echo "" echo "-S: show the generated SQL" exit 0; fi if [ "$error" != "0" ]; then echo "execution terminated" exit 1 fi if [ "$needNodes" -o "$needUserDetails" -o "$needAccountDetails" -o \ "$needQueueDetails" -o "$needExitCodeDetails" ]; then needLogs=1 fi connection="dbname=jml_prod user=jml_reader host=ds2 password=reader" cat - >$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <= to_timestamp('$Start','MM/DD/YYYY HH24:MI:SS') EOF word=" and" elif [ "$End" ]; then cat - >>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql <>$T/findjob.sql < $T/report cat $T/report | while read jobId junk; do cat - >$T/findjob.sql < $T/report2 cat - >$T/findlogs.sql <>$T/findlogs.sql <>$T/findlogs.sql <= to_timestamp('$Start','MM/DD/YYYY HH24:MI:SS') EOF elif [ "$End" ]; then cat - >>$T/findlogs.sql <>$T/findlogs.sql <>$T/findlogs.sql < $T/logs gawk -F\| '{ jn=$1 if($2 != "") jn = jn "[" $2 "]" printf "%-14s %20s\n","job number:", jn printf "%-14s %20s\n","user:", $3 printf "%-14s %20s\n","account:", $4 printf "%-14s %20s\n","# of nodes:", $5 printf "%-14s %20s\n","wall seconds:", $6 printf "%-14s %20s\n","last start:", $7 printf "%-14s %20s\n","last end:", $8 }' $T/report2 cat $T/logs echo "" done