#!/bin/bash # Script to log time in and out MINPARAMS=1 LOG_DIR=/home/justin NET_DIR=/home/justin/Network/G/DOCS/DP_MIS/JPURDY/. E_NOARGS=65 E_BADARGS=66 E_XCD=67 TESTLOG1=testtimelog1 TESTLOG2=testpayperiod2 LIVELOG1=timelog LIVELOG2=payperiod # Test for arguments if [[ -z "$1" ]] then echo "Usage: punch [OUT | LUNCH | VACATION | HOLIDAY]" exit $E_NOARGS fi # Test for proper syntax, set BACK variable if [[ $1 = OUT ]] then BACK=IN elif [[ $1 = LUNCH ]] then BACK=LUNCH_IN elif [[ $1 = VACATION ]] then BACK=VACATION_IN elif [[ $1 = HOLIDAY ]] then BACK=HOLIDAY_IN else echo "Usage: punch [OUT | LUNCH | VACATION | HOLIDAY]" exit $E_BADARGS fi # Test for testing or live if [[ $2 = -t ]] then LOG1=$TESTLOG1 LOG2=$TESTLOG2 else LOG1=$LIVELOG1 LOG2=$LIVELOG2 fi # Insert date for vacation/holiday #if [[ $1 = VACATION ]] #then # Go to home dir cd $LOG_DIR # Test if in home dir if [[ `pwd` != $LOG_DIR ]] then echo "Can't change to $LOG_DIR" exit $E_XCD fi # Create logs if needed touch $LOG1 touch $LOG2 # Log time & date to timelog # FFR, variables used are: %F - full ISO date %t - tab %R - 24h timestamp date +%F%t%R%t$1 >> $LOG_DIR/$LOG1 # Log epoch to payperiod date +%s%t$1 >>$LOG_DIR/$LOG2 # launch screensaver and wait for login xlock -mode biof & wait # Display current time total if [[ $BACK = IN ]] then awk -f $LOG_DIR/timecount.awk payperiod fi date +%F%t%R%t$BACK >> $LOG_DIR/$LOG1 date +%s%t$BACK >> $LOG_DIR/$LOG2 # display last 5 lines of log, copy real logfile to network tail -n 5 $LOG_DIR/$LOG1 cp $LOG_DIR/$LOG1 $NET_DIR exit