hi all, maybe will someone find this script useful, or at least anyone who uses this http://people.bu.edu/rbs/adsm-report
the script automaticaly handles dsmaccnt.log and extracts stats for last month with adsm-report.pl script and some other minor yada yada ... greetz. ---------------------- #!/bin/sh #set -x # ############################################################################### # generating statistics, bla bla ... # working direcotory is : /usr/local/bin/adsm-report # info : http://people.bu.edu/rbs/adsm-report # # RELATED : crontab entry which kicks of every 1st of the month for previous month # crontab: 0 1 1 * * /usr/local/bin/adsm-report/adsm-report.sh >> /usr/local/adsm-report/adsm-report.log 2>&1 # every 1st of the month at 1AM o'clock make ADSM-REPORT for previous month # TODO : finding out last months name - DONE # command line variable input possibility # customizing report outputname in perl script ... # bunch of other stuff # yada yada yada ############################################################################### # ############################################################################### # ENV ############################################################################### VER="v1.3" WORK_DIR="/usr/local/bin/adsm-report" REP_SCRIPT="adsm-report.pl" DATE_DET="`date +\"%d%m%Y%H%M\"`" DATE="`date +\"%d%m%Y\"`" #CUR_MONTH="`date +\"%B\"`" # uncomment if doing current month #CUR_YEAR="`date +\"%Y\"`" # uncomment if doing current month #EMAIL_ME="[EMAIL PROTECTED]" # CUSTOMIZE IT ! MAILEXE="mailx -s" #MAIL_SUBJECT="ADSM-REPORT stats for $CUR_MONTH|$CUR_YEAR" # uncomment if doing current month #REP_FILE_NAME="ADSM-REP-$CUR_MONTH$CUR_YEAR" # uncomment if doing current month HOST="`uname -n`" BASE="`basename $0`" DSMSERV_DIR="/usr/tivoli/tsm/server/bin" ACCNT_LOG="dsmaccnt.log" LWN="dsmaccnt.log.WORK" DEF_OUTPUT="adsm-report-file" FY="fromyear" FM="frommonth" TY="toyear" TM="tomonth" GZIP="/usr/bin/gzip -f" # forced overwrite gzipping SLEEP="sleep 2" CP="cp" MV="mv" PRI="print" GZ_EXT="gz" GZ_REDIR="-c" TXT_EXT="txt" UUENC="uuencode" HR="#####################################################" HR2="-----------------------------------------------------" CD="cd" ############################################################################### # ENV END ############################################################################### # ############################################################################### # FUNCTIONS ############################################################################### function last_month { # this function finds out last months name and if it's December return last year also as variable ${PRI} "Finding previous month name and year, if Dec return current year as year - 1 ;-) ........." if [ `date +'%m'` -eq 1 ]; then MONTH="Dec" YEAR=`expr \`date +'%Y' \` - 1` ${PRI} ${HR2} ${SLEEP} ${PRI} "Last month is ${MONTH}, year is ${YEAR}." else MONTH=`echo "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"|awk -v x=\`expr \\\`date +'%m' \\\` - 1\` '{print $x}'` YEAR=`date +'%Y'` ${PRI} ${HR2} ${SLEEP} ${PRI} "Last month is ${MONTH}, year is ${YEAR}." fi } ############################################################################### function copy { # copy account log to work dir - WARNING: it can be BIG ${PRI} "Copying account log to ${WORK_DIR} ........." #${PRI} "${CP} ${DSMSERV_DIR}/${ACCNT_LOG} ${WORK_DIR}/${ACCNT_LOG}" ${PRI} "${CP} ${DSMSERV_DIR}/${ACCNT_LOG} ${WORK_DIR}/${LWN}" ${PRI} ${HR2} ${SLEEP} ${CP} ${DSMSERV_DIR}/${ACCNT_LOG} ${WORK_DIR}/${LWN} ${PRI} "Finished copy." ${SLEEP} } ############################################################################### function rename { # renaming account log into work wersion ... ya i know i could do that in previous function during copy but. no :-) ... actually this func is not in use right now ${PRI} "Renaming account log into ${LWN} as working version name ........." ${PRI} "${MV} ${WORK_DIR}/${ACCNT_LOG} ${WORK_DIR}/${LWN}" ${PRI} ${HR2} ${SLEEP} ${MV} ${WORK_DIR}/${ACCNT_LOG} ${WORK_DIR}/${LWN} ${PRI} "Renaming finished." ${SLEEP} } ############################################################################### function start_report { # starting report script ${PRI} "Starting report script ........." #${PRI} "${WORK_DIR}/${REP_SCRIPT} ${FY} ${CUR_YEAR} ${FM} ${CUR_MONTH} ${TY} ${CUR_YEAR} ${TM} ${CUR_MONTH} ${LWN}" # uncomment if doing current month ${PRI} "${WORK_DIR}/${REP_SCRIPT} ${FY} ${YEAR} ${FM} ${MONTH} ${TY} ${YEAR} ${TM} ${MONTH} ${LWN}" ${PRI} ${HR2} ${SLEEP} # for current month and year decomment line below, for previous month look 2 lines below LOL #${WORK_DIR}/${REP_SCRIPT} ${FY} ${CUR_YEAR} ${FM} ${CUR_MONTH} ${TY} ${CUR_YEAR} ${TM} ${CUR_MONTH} ${LWN} # uncomment if doing current month # working as designed with year/month function output as default : MAKE REPORT FOR PREVIOUS MONTH. period. :-) ${WORK_DIR}/${REP_SCRIPT} ${FY} ${YEAR} ${FM} ${MONTH} ${TY} ${YEAR} ${TM} ${MONTH} ${LWN} ${PRI} ${HR2} ${PRI} "Report script finished." ${SLEEP} } ############################################################################### function compress_log { # gzipping of account log - WARNING: it can be BIG ${PRI} "Compressing account log (space saving) ........." #${PRI} "${GZIP} ${WORK_DIR}/${LWN}" ${PRI} "${GZIP} ${GZ_REDIR} ${WORK_DIR}/${LWN} > ${WORK_DIR}/${LWN}.${DATE}.${GZ_EXT}" ${PRI} ${HR2} ${SLEEP} #${GZIP} ${WORK_DIR}/${LWN} # compressing account log as is, every time it rewrites the already existing one - WARNING: mutualy exclusive with line BELOW ${GZIP} ${GZ_REDIR} ${WORK_DIR}/${LWN} > ${WORK_DIR}/${LWN}.${DATE}.${GZ_EXT} # compressing account log with timestamp for archival purposes, every month new one - WARNING: mutualy exclusive with line ABOVE ${PRI} "Compressing finished." ${SLEEP} } ############################################################################### function rename_output { # renaming output file into new name ${PRI} "Renaming output file (plus timestamp) ........." ${PRI} "${MV} ${WORK_DIR}/${DEF_OUTPUT} ${WORK_DIR}/${DEF_OUTPUT}.${DATE}" ${PRI} ${HR2} ${SLEEP} ${MV} ${WORK_DIR}/${DEF_OUTPUT} ${WORK_DIR}/${DEF_OUTPUT}.${DATE} ${PRI} "Renaming finished." ${SLEEP} } ############################################################################### function gzippit { # gzipping report - if needed , currently disabled ${PRI} "Compressing report ........." ${PRI} "${GZIP} ${WORK_DIR}/${DEF_OUTPUT}.${DATE}.${GZ_EXT}" ${PRI} ${HR2} ${SLEEP} ${GZIP} ${WORK_DIR}/${DEF_OUTPUT}.${DATE} ${PRI} "Compressing of report finished." ${SLEEP} } ############################################################################### function send_mail { # sending mail with gzipped report ${PRI} "Encoding and sending of report ........." MAIL_SUBJECT="ADSM-REPORT stats for ${MONTH}|${YEAR}" # used when automated REP_FILE_NAME="ADSM-REP-$MONTH|$YEAR" # used when automated ${PRI} "${UUENC} ${WORK_DIR}/${DEF_OUTPUT}.${DATE} ${WORK_DIR}/${DEF_OUTPUT}.${DATE}.${TXT_EXT} | ${MAILEXE} "${MAIL_SUBJECT}" "${EMAIL_ME}"" # just printing out command line ${PRI} ${HR2} ${SLEEP} #${UUENC} ${WORK_DIR}/${DEF_OUTPUT}.${DATE} ${WORK_DIR}/${DEF_OUTPUT}.${DATE}.${TXT_EXT} | ${MAILEXE} "${MAIL_SUBJECT}" "${EMAIL_ME}" # uncomment if doing current month ${UUENC} ${DEF_OUTPUT}.${DATE} ${REP_FILE_NAME}.${DATE}.${TXT_EXT} | ${MAILEXE} "${MAIL_SUBJECT}" "${EMAIL_ME}" ${PRI} "Sending of report finished." ${SLEEP} } ############################################################################### # FUNCTIONS END ############################################################################### # ############################################################################### # MAIN PART ############################################################################### # ${PRI} ${HR} ${PRI} "${VER} - Start >>>" last_month ${PRI} ${PRI} ${HR} copy ${PRI} ${PRI} ${HR} #rename #${PRI} #${PRI} ${HR} start_report ${PRI} ${PRI} ${HR} compress_log ${PRI} ${PRI} ${HR} rename_output ${PRI} ${PRI} ${HR} #gzippit #${PRI} #${PRI} ${HR} send_mail ${PRI} ${PRI} ${HR} ${PRI} "<<< End" # ############################################################################### # MAIN PART END ############################################################################### # # SCRIPT END
