myuptimerecord.sh

16 06 2011

Buscando un script que sume el tiempo total que he usado la computadora (al menos desde que tenga el script) me veo obligado a crear primero un script que registre primero esos tiempos.

#!/bin/bash
#
#Author FCR  06/15/11  fcr@myfcr.tk http://ww.incendialaciudad.tk
#
#works used: 
#http://www.linuxquestions.org/questions/programming-9/shell-script-to-store-high-water-mark-for-uptime-676544/
#http://www.pcolalug.org/smf/index.php?action=printpage;topic=3413.0
#
up0=`date`
up1=`uptime`
up2=`echo $up1 | awk '{print NF}'`
up2=$(($up2 - 6))
up4=2
up5=$up1
until [ $up4 -eq $up2 ]; do
up5=`echo $up5 | sed 's/ [^ ]* / /'`
up4=$(($up4 + 1))
done
up6=`echo $up5 | sed 's/ [^ ]* / /' | sed 's/ [^ ]* / /' | sed 's/[^ ]* / /'`
up3=$up1
up4=-1
until [ $up4 -eq 6 ]; do
up3=`echo $up3 | sed 's/[ ][^ ]*$//'`
if [ $up4 -eq 3 ]; then
up7=$up3
fi
up4=$(($up4 + 1))
done
up3=`echo $up3 | sed s'/[^ ]* / /'`
up3=`echo $up3 | sed s'/[^ ]* / /'`
up4=2
until [ $up4 -eq 0 ]; do
up7=`echo $up7 | sed 's/[^ ]* / /'`
up4=$(($up4 - 1))
done
up7=`echo $up7 | sed 's/[^ ]* / /'`

datetime=`date`
systime=`cat /proc/uptime | awk 'BEGIN { FS = "." } ; { print $1 } '  `

#temp fix: up5 en lugar de up3
#power0=`echo $@ | awk '{print $1}' FS=" "`
#power1=`echo $@ | awk '{print $2}' FS=" "`

up3=""
up7=""
up3=`echo $up5 | awk '{print $1}' FS=" "`
up7=`echo $up5 | awk '{print $2}' FS="$up3"`
up7=`echo $up7 | awk '{print $1}' FS=" load average"`


	if [[ -f /root/.myuptimerecord.log ]]
	then	
		OLD_UP_V=`cat /root/.myuptimerecord.log | awk 'BEGIN { FS = "|" } ; sort -u ;END { print $NF } '  `
		OLD_UP_V=`echo $OLD_UP_V | awk 'BEGIN { FS = ":::" } ; { print $1 } '  `
		OLD_UP=`echo $OLD_UP_V | awk 'BEGIN { FS = "@" } ; { print $1 } '  `
		OLD_UP_DATE=`echo $OLD_UP_V | awk 'BEGIN { FS = "@" } ; { print $2 } '  `
	else	
		OLD_UP=0
	fi
	
	NEW_UP=$systime
	NEW_UP_DATE=$datetime
	echo "Was: $OLD_UP VS Now: $NEW_UP"
	
	if [[  $(echo "$NEW_UP > $OLD_UP" | bc) -eq 0 ]]
	then
		NEW_UP=$OLD_UP
		NEW_UP_DATE=$OLD_UP_DATE
	else
		echo "maxtime!!!!"
	fi


if test "$1" = "stop"
then
power0="shutting down"
	echo "--------" >> /root/.startstop.log
	echo " Event: " $power0 "at" $up0 >> /root/.startstop.log
	echo "Uptime: " $up7 "and" $up6 >> /root/.startstop.log
	tail /root/.startstop.log
	echo "|" $NEW_UP "@" $NEW_UP_DATE ":::"  $up7 "@" $up0 "@" $up6 ":::" $1 "">> /root/.myuptimerecord.log
fi

if test "$1" = "start"
then
power0="start up"
	echo "--------" >> /root/.startstop.log
	echo " Event: " $power0 "at" $up0 >> /root/.startstop.log
	echo "Uptime: " $up7 "and" $up6 >> /root/.startstop.log
	tail /root/.startstop.log
	echo "|" $NEW_UP "@" $NEW_UP_DATE ":::"  $up7 "@" $up0 "@" $up6 ":::" $1 "">> /root/.myuptimerecord.log
fi

Luego pondre el script que sume los tiempos, pero eso sera cuando deje de luchar contra la matematica en bash.

[Nota]: esta hecho para funcionar a full en puppylinux, colocandolo en /etc/init.d pero no estoy seguro si de esa forma puede funcionar en todas las distros.

[Actualizacion]: Modifique una linea que provocaba errores en cuanto a cual era el mayor uptime.

Anuncios

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: