#/bin/sh
# Video Console Monitor
# [a 'poke' command demo] 
# (C)2000 M. Andreoli, for muLinux

#set -x
# syntax

usage()
{
cat <<END

Simple up-right corner monitor, for Linux consolles.
It shows time/date, free memory, uptime and received/trasmitted
packets across Ethernet interface.

				(C) M. Andreoli, for muLinux

Usage: vcm [n1 n2 n3 ...] 

	n1, n2, ... are	console's numbers. 
	If n=0, it shows monitor on all consolles (discouraged,
	because slow) 

END
exit 0
}

if [ $# -eq 0 ] ; then
	usage
else
	n="$@"
fi

case $n in
0)
	n="1 2 3 4 5 6"
	;;
esac



get_ram()
{
set -- `cat /proc/meminfo`
shift; bytes=$9
mega=`expr $bytes / 1048576`
echo $mega
}

get_up()
{
set -- `cat /proc/uptime`
echo `expr $1 / 60`
}

get_packets()
{
set -- `cat /proc/net/dev | sed -n /eth0/P`
echo "Rx:$2 Tx:$7"
}

super_reset()
{
for i in $n
do
reset > /dev/tty$i
done
}

# MAIN

row1=55
row2=`expr $row1 + 80`
row3=`expr $row2 + 80`

col2=`expr $row2 + 5`
col3=`expr $col2 + 4`

border="------------------------"

#super_reset

while [ 1 ] ; do
for i in $n
do
poke -c /dev/vc$i \
$row1 "`date`" \
$row2 "`get_ram`M" $col2 "`get_up`m" \
$col3 "`get_packets`" \
$row3 $border \
 > /dev/null
[ $? -ne 0 ] && sleep 2
done
done

# End
