#!/bin/sh

curdir=`pwd`
timestamp=`date +%d%b%Y-%H%M`
workdir=${HOME}
r_dir=sllog.$timestamp
r_file=sllog.$timestamp.tar.gz
e_dir=/usr/lib/slmdm
LOG_DEVICE=sllog
MON_DEVICE=slmon
signal_recieved=0

no_device()
    {
    DEV=$1
    echo Not detected $DEV
    echo Exit.
    
    exit -1
    }

trapped_sig()
    {
    echo Please wait - compressing files...

    if [ $signal_recieved -eq 1 ]
    then
	echo
	echo Sorry but because you pressed cntr + c twice an error occured.
	echo Please run the script again ant retry modem session.
	echo Exit.
	kill `cat /tmp/slmon.pid` 2>&1>/dev/null
	kill `cat /tmp/log.pid`   2>&1>/dev/null
	rm -f /tmp/slmon.pid /tmp/log.pid
	rm -rf $workdir/$r_dir
	cd $curdir
	exit -1
    fi
    signal_recieved=1
    }

trap trapped_sig 2

if [ ! -c /dev/$LOG_DEVICE ]
then
    maj_no=`grep -e " ${LOG_DEVICE}\$" /proc/devices | awk '{print $1}'`
    rm -f /dev/${LOG_DEVICE}
    mknod /dev/${LOG_DEVICE} c $maj_no 0
	if [ ! -c /dev/$LOG_DEVICE ]
	then
	    no_device /dev/$LOG_DEVICE
	fi
    fi

if [ ! -c /dev/$MON_DEVICE ]
then
    maj_no=`grep -e " ${MON_DEVICE}\$" /proc/devices | awk '{print $1}'`
    rm -f /dev/${MON_DEVICE}
    mknod /dev/${MON_DEVICE} c $maj_no 0
	if [ ! -c /dev/$MON_DEVICE ]
	then
	    no_device /dev/$MON_DEVICE
	fi
    fi

echo Start monitoring...

if [ ! -a $workdir/$r_dir ]
then
    mkdir -p $workdir/$r_dir
fi

cd $workdir/$r_dir

sh -c "echo \$\$ > /tmp/slmon.pid ; exec ${e_dir}/slmon" &
sh -c "echo \$\$ > /tmp/log.pid   ;   exec cat /dev/sllog > $workdir/$r_dir/logger.txt" &

echo Monitoring started.
echo Please stop it by pressing \(cntr + c\) when modem\'s session will be closed.
echo Please be patient after \(cntr + c\) pressing - the termination may take some time.

echo Cpu info:     >  $workdir/$r_dir/machine.txt
cat /proc/cpuinfo  >> $workdir/$r_dir/machine.txt
echo Memory info:  >> $workdir/$r_dir/machine.txt
cat /proc/meminfo  >> $workdir/$r_dir/machine.txt
echo Pci info:     >> $workdir/$r_dir/machine.txt
cat /proc/pci      >> $workdir/$r_dir/machine.txt
echo Uptime info:  >> $workdir/$r_dir/machine.txt
uptime             >> $workdir/$r_dir/machine.txt

while [ 1 ]
do
    sleep 1
    if [ $signal_recieved -gt 0 ] ; then
	trap trapped_sig 2
	break
    fi
done

kill `cat /tmp/slmon.pid`
kill `cat /tmp/log.pid`
rm -f /tmp/slmon.pid /tmp/log.pid
cd $workdir
tar czf ${r_file} ${r_dir}
echo Files compressed into $workdir/$r_file
echo Please send this file to SmartLink.
echo Thanks.
rm -rf $workdir/$r_dir
rm -f $LOG_DEVICE
rm -f $MON_DEVICE
cd $curdir

exit 0
