#!/bin/bash LOGDIR="/var/log/recordshell" LOGGING_PID="$$" FILEPREFIX="$LOGDIR/$(date '+%Y-%m-%d')/$(date '+%Y-%m-%d_%H-%M-%S')-$LOGGING_PID"; EXTRA_ARGS="-c 'su -c /bin/bash $SUDO_USER'" CFG_FILE="/etc/recordshell" if ( bash $CFG_FILE &> /dev/null );then source $CFG_FILE; else echo "error in configfile $CFG_FILE" exit 1 fi mkdir -p $FILEPREFIX if [ "$?" != "0" ];then echo "Unable to create directory structure $FILEPREFIX" exit 1 fi SUDO_MSG="" if [ -n "$SUDO_USER" ];then SUDO_MSG=", (sudo user $SUDO_USER, sudo command $SUDO_COMMAND)" fi echo "*********************************" logger -s -t recordshell "[$LOGGING_PID] Starting logged shell session: ${FILEPREFIX}/{typescript,timing} $SUDO_MSG" set -x script $EXTRA_ARGS -e -q -f -t ${FILEPREFIX}/typescript 2>${FILEPREFIX}/timing set +x logger -s -t recordshell "[$LOGGING_PID] Finished logged shell session: ${FILEPREFIX}/{typescript,timing} $SUDO_MSG" echo "*********************************" gzip ${FILEPREFIX}/typescript if [ "$?" != "0" ];then logger -s -t recordshell "[$LOGGING_PID] compression of ${FILEPREFIX}/typescript failed" else logger -s -t recordshell "[$LOGGING_PID] compression of ${FILEPREFIX}/typescript successful (MD5SUM $(md5sum ${FILEPREFIX}/typescript.gz|awk '{print $1}'))" fi gzip ${FILEPREFIX}/timing if [ "$?" != "0" ];then logger -s -t recordshell "[$LOGGING_PID] compression of ${FILEPREFIX}/timing failed" else logger -s -t recordshell "[$LOGGING_PID] compression of ${FILEPREFIX}/timing successful (MD5SUM $(md5sum ${FILEPREFIX}/timing.gz|awk '{print $1}'))" fi logger -s -t recordshell "[$LOGGING_PID] review session with: scriptreplay -t ${FILEPREFIX}/{timing.gz,typescript.gz}"