Hi,
I was in need of a rundig.sh script that was a little more flexible and easy to use than what's in the contrib directory. I wanted one that would allow me to override default values with command line parameters and that would fail gracefully when there was a problem. I spent about two or three days working on a shell script that would meet these needs and produced the attached.
Toward the end of the exercise, while consulting rundig in the /installdir directory for help on how to do things like iterate through the parameters, I realized that rundig more or less does what I need already, and with more elegance (using 'shift' when -c is encountered rather than trying to use sed, like I did...) so I felt rather humbled, but decided to send along my script should someone find it useful.
Pointers are always appreciated, but keep in mind that I'm still marveling over installdir/rundig...
Ted Stresen-Reuter
====================== #! /bin/sh
# This is the directory where all the htdig stuff lives BASEDIR="/Library/htdig"
# Report destination - who to send the report to REPORT_DEST="[EMAIL PROTECTED]" export REPORT_DEST
# This is the name (with complete path) of the conf file to use CONF="$BASEDIR/conf/htdig.conf"
###### You shouldn't need to modify anything below this line debug=0
stats= opts= alt= main=
for arg
do
case "$arg" in
-a) alt="$arg" ;;
-s) stats="$arg" ;;
-i) main="$arg" ;;
*) opts="$opts $arg" ;; # e.g. -v or -c config
esac
done# if a config file exists, use it, otherwise, use the default configfile=`echo $opts | sed 's/.*\-c *\([^ ][^ ]*\).*/\1/g'`
if test -z "$configfile"; then
CONF=$CONF
else
CONF=$configfile
fiif test -z "$REPORT_DEST"; then
echo "No destination has been set for the report. Please set DESTINATION to a valid email address."
exit 1
else
if test -d $BASEDIR; then
if test -r $CONF; then
# Get the db dir
new_db_dir=`awk '/^[^#a-zA-Z]*database_dir/ { print $NF }' < $CONF`
if [ "$new_db_dir" != "" ]; then
DBDIR=$new_db_dir
if test -d $DBDIR && test $debug -lt 1; then
# This is the name of a temporary report file
REPORT=$DBDIR/htdig.report # This is the subject line of the report
SUBJECT="htdig report"# This is a little intro to the report
echo "This report produced by the script $0 running on `hostname` with the following parameters: $main $alt $stats $opts" > $REPORT
##### Dig phase
STARTTIME=`date`
echo "Start time: $STARTTIME"
echo "rundig: Start time: $STARTTIME" >> $REPORT # by default we use -a?
$BASEDIR/bin/htdig $main $alt $stats $opts TIME=`date`
echo "Done Digging: $TIME"
echo "htdig: Done Digging: $TIME" >> $REPORT ##### Purge Phase
# (clean out broken links, etc.)
$BASEDIR/bin/htpurge $alt $opts >> $REPORT TIME=`date`
echo "Done Purging: $TIME"
echo "htpurge: Done Purging: $TIME" >> $REPORT# Move 'em into place.
cp $DBDIR/db.docs.index.work $DBDIR/db.docs.index
cp $DBDIR/db.docdb.work $DBDIR/db.docdb
cp $DBDIR/db.excerpts.work $DBDIR/db.excerpts
cp $DBDIR/db.words.db.work $DBDIR/db.words.db
test -f $DBDIR/db.words.db.work_weakcmpr && cp $DBDIR/db.words.db.work_weakcmpr $DBDIR/db.words.db_weakcmpr
##### Fuzzy Phase
$BASEDIR/bin/htfuzzy $opts endings >> $REPORT
$BASEDIR/bin/htfuzzy $opts synonyms >> $REPORT TIME=`date`
echo "Done Fuzzying: $TIME"
echo "htfuzzy: Done Fuzzying: $TIME" >> $REPORT##### Cleanup Phase
# To get additional statistics, uncomment the following line
$BASEDIR/bin/htstat $opts >>$REPORT
END=`date`
echo "End time: $END"
echo "rundig: End time: $END" >> $REPORT
echo # Grab the important statistics from the report file
# All lines begin with htdig: or htmerge:
fgrep "htdig:" $REPORT
echo
fgrep "htpurge:" $REPORT
echo
fgrep "htfuzzy:" $REPORT
echo
fgrep "rundig:" $REPORT
echoecho "Total lines in $REPORT: `wc -l $REPORT`"
# Send out the report ...
mail -s "$SUBJECT - $STARTTIME" $REPORT_DEST < $REPORT
# ... and clean up
rm $REPORT
exit 0else
if test $debug -eq 1 -o $debug -gt 1; then
echo $CONF
exit 0else
echo "No database_dir has been specified in $CONF"
exit 1
fi
fi
else echo "$DBDIR is NOT a directory"
exit 1fi
else
if test -z "$configfile"; then
echo "$CONF is NOT readable."
else
echo "$CONF is NOT readable. You need to specify the complete path to the config file when passing it as a parameter to this script."
fi
exit 1
fi
else
echo "$BASEDIR is NOT a directory"
exit 1fi
fi
-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
ht://Dig Developer mailing list:
[EMAIL PROTECTED]
List information (subscribe/unsubscribe, etc.)
https://lists.sourceforge.net/lists/listinfo/htdig-dev
