[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

apt-get dialup/housekeeping script



I recently had an email request for a script I use to connect to 
the net in the wee hours of the morning and download any debian 
updates and do some basic house keeping tasks.  Just in case anyone else 
is interested, I have included the script, and the cron syntax I use, 
in this message.

What the script does is check for a dialup connection, dials one if 
none exists, cleans out apt's cache, updates the package list, downloads 
(but doesn't install) any updates, checks the disk usage, checks for any 
f-prot definition updates (I use f-prot to check a Samba share), and 
then synchronizes my system time with a time clock on the net.  If 
it had to create a dialup connection, it disconnects afterwords.  
The cron job is then setup to email me the output.  (I have it set up 
so it runs daily, at 5:30 AM).

The whole script is written in bash (probably sh compatible though), and 
uses basic unix commands (cut, sed, grep, etc) for the most part.  It 
does rely on having a working "pon" and "poff" command for dialing out.

Of course, all this code is provided as-is, and I take no responsibility 
for it in the odd event that your machine has caught fire.  If you find 
any bugs, or have any suggestions (and you probably do), please feel free 
to email the list or to email me personally.

- Jesse Meyer

PS:  You will probably need to change the user this emails to, and the 
	machine's name.  Unless you run F-Prot A/V, you probably will 
	want to remove that as well.  Also, if you don't have ntp date 
	installed, its probably worth commenting out that section.

======================== cron job ==================================

# At 5:30 AM, run the system-tattler script
30	5	*	*	*	/etc/scripts/system-tattler.sh \
	| mail -s "System Tattler" dasunt &>/dev/null

=============== /etc/scripts/system-tattler.sh =====================
#!/bin/sh
# Author 	: Jesse Meyer
# Last Update	: Mar 18, 2003
# Version of this script
VERSION=1.0	


# Machine name
SYSTEM=dagda	

# binary location and other info
APT=/usr/bin/apt-get
CUT=/usr/bin/cut
DATE=`/bin/date`
DF=/bin/df
DEF_FILES=/usr/local/f-prot/*.DEF
DEF_CUT=44-56,75-
GREP=/bin/grep
LS=/bin/ls
POFF=/usr/bin/poff
PON=/usr/bin/pon
ROUTE_FILE=/proc/net/route
SED=/bin/sed

# has to be set after $GREP and $ROUTE_FILE is defined
ISUP="$GREP -c ppp0 $ROUTE_FILE"

# ignore variables after this
STATUS=`$ISUP`
DIDDIAL=0

echo "This report was generated by the system-tattler script, version $VERSION"
echo "System : $SYSTEM"
echo "Date :   $DATE"
# echo "========================================================================"
if [ $STATUS -eq 0 ]
then
	# echo "dialup link is down"
	# echo "attempting to dial"
	$PON
	# echo "waiting 120 seconds for connection..."
	sleep 120
	STATUS=`$ISUP`

	if [ $STATUS -eq 0 ]
	then
		echo "========================================================================"
		echo "ERROR: cannot connect, aborting..."
		echo "========================================================================"
		exit
	fi

	# We had to dial this link, so...
	DIDDIAL=1
# else
	# echo "dialup link is up"
fi
# echo "========================================================================"
echo "============================== disk usage =============================="
$DF -h
echo "========================================================================"
echo "============================ apt-get stats ============================="
# echo "cleaning apt cache..."
# echo "updating apt cache..."
$APT clean > /dev/null
if ( $APT -qq update &>/dev/null )
then
	# echo "apt-get update attempt succeeded - running dist-upgrade";
	# Print the packages that are to be upgraded...
	$APT -u dist-upgrade | $SED -e '1,2d' 
	# ...and download them
	$APT -d -qq dist-upgrade &>/dev/null
else
	echo "apt-get update attempted failed - not running dist-upgrade";
fi
echo "========================================================================"
echo "======================= f-prot virus definitions ======================="
# ls -lh *.DEF | cut -c 56-70,44-55
$LS -lh $DEF_FILES | $CUT -c $DEF_CUT
echo "========================================================================"
echo "============================= time update =============================="
/etc/init.d/ntpdate start
echo "========================================================================"
if [ $DIDDIAL -eq 1 ]
then
	# echo "========================================================================"
	# echo "disconnecting link that was created..."
	$POFF
	# echo "========================================================================"
fi

================================ End Script ================================
-- 
        ...crying "Tekeli-li! Tekeli-li!"... ~ HPL
 icq : 34583382              |     === ascii ribbon campaign ===
 msn : dasunt@hotmail.com    |  ()  - against html mail
 yim : tsunad                |  /\  - against proprietary attachments

Attachment: pgpFLmkU6tDgG.pgp
Description: PGP signature


Reply to: