I've been using a script for over a month, sending Toad an hourly node status. He mentioned it would be great if some other people would run it. Since I couldn't bear to send in the mess I have been using, I fixed it up a little. Then I tested it. It didn't work anymore, so I fixed it up some more. Now it works.
Use mailFredStatus --help to find out how to use it. Most things you would want to change you can specify once on the command line followed by --writedefaults and your choices are written to ~/.mailFredStatus Put the script into your freenet directory alongside freenet.jar and freenet.conf. 9a976e9ff02309007f8bcc4be4b35a7c /home/ejhuff/freenet/mailFredStatus 1e1a9ad7830bbcb2592073c64da0a90e /home/ejhuff/freenet/mailFredStatus.asc 5d71baf9ed089e0a115d066222187ec0 /home/ejhuff/freenet/gpg-key-D5FA1719 -- Ed Huff
#!/bin/bash
VERSION='mailFredStatus version 1.0 $Id$'
printMailHeaders() {
echo "To: $TO"
echo "From: $FROM"
echo "Errors-To: $FROM"
echo "Bcc: $BCC"
echo "Subject: Success probabilities $(date --utc)"
echo
}
printAssortedData() {
echo $VERSION
echo SERVLET=$SERVLET
date --utc
wget -O - "http://$SERVLET/servlet/nodeinfo/performance/general" 2>/dev/null \
| tr -d "\n" \
| sed 's/<tr>/@<tr>/g' \
| sed 's|</tr>|</tr>@|' \
| sed 's/<[^>]*>/ /g; s/ * @/@/g; s/@ */@/g; s/ */ /g' \
| sed 's/Uptime[@ ]* /Uptime /g' \
| tr '@' "\n" \
| egrep 'Version|Build|Uptime|Current|Active' \
| grep -v 'README'
wget -O - "http://$SERVLET/servlet/nodeinfo/networking/ocm?setLevel=1&setMode=new" 2>/dev/null \
| egrep '^<tr><td>[^<]' \
| sed 's/<[^>]*>/ /g; s/^ *//g; s/ */ /g; s/ / /g'
echo
echo "Network Load:"
wget -O - "http://$SERVLET/servlet/nodeinfo/networking/loadstats" 2>/dev/null \
| sed 's/<[^>]*>/ /g; s/^ *//g; s/ */ /g; s/ / /g' \
| grep '^[A-Za-z() ]*:'
echo "Frost etc. are not running."
echo "Traffic shaping is not running:"
echo $TC '-s qdisc show dev eth0 | head -3'
$TC -s qdisc show dev eth0 | head -3
echo Non-default non-bookmark freenet.conf lines
grep '^[a-zA-Z]' freenet.conf | grep -v bookmark
echo
echo "$NETSTAT -n --inet | egrep -v :6000\|:8888\|\^tcp\ \*0\ \*0\ | grep ESTAB | sort -k 2nr,2 -k 3nr,3"
$NETSTAT -n --inet | head -2
$NETSTAT -n --inet | egrep -v :6000\|:8888\|\^tcp\ \*0\ \*0\ | grep ESTAB | sort -k 2nr,2 -k 3nr,3
echo
wget -O - http://$SERVLET/servlet/nodestatus/psuccess_data.txt 2>/dev/null
echo
wget -O - http://$SERVLET/servlet/nodeinfo/internal/env 2>/dev/null \
| grep '^<tr><td>' \
| sed 's/<[^>]*>/ /g; s/^ *//g; s/ */ /g' \
| egrep 'Architecture|processors|Operating|Version|JVM|Maximum|Percent|Total'
echo
wget -O - http://$SERVLET/servlet/nodestatus/nodestatus.html 2>/dev/null \
| grep '^<tr><td>' \
| grep -v '<b>' \
| sed 's/<[^>]*>/ /g; s/^ *//g; s/ */ /g'
date --utc
}
[ -z "$TO" ] && TO="Toad <[EMAIL PROTECTED]>"
[ -z "$FROM" ] && FROM="[EMAIL PROTECTED]:-localhost}"
[ -z "$BCC" ] && BCC="[EMAIL PROTECTED]:-localhost}"
[ -z "$INTERVAL" ] && INTERVAL=3600
[ -z "$SERVLET" ] && SERVLET=127.0.0.1:8888
[ -z "$FREENETHOME" ] && FREENETHOME=$HOME/freenet/
[ -z "$VERBOSE" ] && VERBOSE=
[ -z "$GOLIVE" ] && GOLIVE=
[ -z "$SENDMAIL" ] && SENDMAIL=/usr/sbin/sendmail
[ -z "$TC" ] && TC=/sbin/tc
[ -z "$NETSTAT" ] && NETSTAT=/bin/netstat
HELP=
WRITEDEFAULTS=
if [ -f ~/.mailFredStatus ] ; then
source ~/.mailFredStatus
fi
while [[ $# > 0 ]] ; do
case "$1" in
--to)
TO=$2
shift;;
--from)
FROM=$2
shift;;
--BCC)
BCC=$2
shift;;
--interval)
INTERVAL=$2
shift;;
--sendmail)
SENDMAIL=$2
shift;;
--tc)
TC=$2
shift;;
--netstat)
NETSTAT=$2
shift;;
--dryrun)
GOLIVE=
;;
--golive)
GOLIVE=TRUE
;;
--verbose)
VERBOSE=-v
;;
--v*|--V*|-v|-V)
echo $VERSION
echo mailFredStatus --help for help.
exit 0
;;
--write*|-w*)
WRITEDEFAULTS=TRUE
;;
--h*|-h*)
HELP=TRUE
;;
*)
HELP=TRUE
echo "$1 interpreted as --help"
;;
esac
shift
done
if [ ! -z "$WRITEDEFAULTS" ] ; then
echo "Making current options the defaults in ~/.mailFredStatus"
(cat <<EOF
TO="$TO"
FROM="$FROM"
BCC="$BCC"
INTERVAL="$INTERVAL"
SERVLET="$SERVLET"
FREENETHOME="$FREENETHOME"
VERBOSE="$VERBOSE"
SENDMAIL="$SENDMAIL"
TC="$TC"
GOLIVE="$GOLIVE"
NETSTAT="$NETSTAT"
EOF
) > ~/.mailFredStatus
echo New contents of ~/.mailFredStatus:
cat ~/.mailFredStatus
echo
echo Done.
exit 0
fi
if [ ! -z "$HELP" ] ; then
# will do $VAR substitution in the text.
cat <<EOF
NAME
mailFredStatus - Mail Freenet REference Daemon status to Toad
SYNOPSIS
mailFredStatus [ --help | -h | --version | -v ]
mailFredStatus [ --to '$TO' ]
[ --from '$FROM' ]
[ --BCC '$BCC' ]
[ --interval '$INTERVAL' ]
[ --servlet '$SERVLET' ]
[ --FreenetHOME '$FREENETHOME' ]
[ --dryrun | --golive ]
[ --sendmail '$SENDMAIL' ]
[ --tc '$TC' ]
[ --verbose ]
[ --writedefaults ]
DESCRIPTION
mailFredStatus will collect status information from
the Fred FProxy server at localhost:8888, from freenet.conf,
and from netstat, and mail it to Toad once an hour.
The command never exits unless interrupted or killed.
Uses sleep to delay, so intervals are approximate.
The --golive option must be specified to actually
send any mail. To make --golive the default, use
this command, with desired defaults specified.
mailFredStatus [defaults] --golive --writedefaults
This will not actually go live, but the next time
mailFredStatus is invoked, it will start running.
--verbose will cause the -v option to be passed
to $SENDMAIL.
FILES
~/.mailFredStatus
If ~/.mailFredStatus exists then this script
sources it. It should assign default values to
the environment variables. The --writedefaults
will overwrite any existing ~/.mailFredStatus
specifying the options from the command line as
the new defaults. Remove the file to use the
original defaults.
ENVIRONMENT
PATH must include wget head egrep grep sort sed date
If exported to the environment, these environment variables
will be used as the defaults for the corresponding options.
Or, if defined in ~/.mailFredStatus, then those values
will override environment or script defaults.
They do not override command line options.
Shown are the values which were in effect after
processing the command line which caused this printout.
TO="$TO"
FROM="$FROM"
BCC="$BCC"
INTERVAL="$INTERVAL"
SERVLET="$SERVLET"
FREENETHOME="$FREENETHOME"
VERBOSE="$VERBOSE"
SENDMAIL="$SENDMAIL"
TC="$TC"
GOLIVE="$GOLIVE"
NETSTAT="$NETSTAT"
FEATURES
Only works on Linux. Uses bash-isms.
Uses wget to read data from servlet on port 8888.
BUGS
Extracts data from web pages, so that innocent changes
to fproxy formatting may break this script.
Isn't written in [ perl | java | /bin/sh | ... ]
Uses sendmail to send mail.
VERSION
$VERSION
EOF
exit 0
fi
echo Changing directory to $FREENETHOME
cd $FREENETHOME
if [[ -z "$GOLIVE" ]] ; then
echo This is a dry run.
echo To go live, you must specify --golive.
echo To make --golive the default, specify --golive --writedefaults.
echo Mail headers would be:
printMailHeaders
echo
echo The mail body would be:
printAssortedData
exit 0
fi
echo
echo Mail headers will be:
printMailHeaders
echo
echo "Type ^C to abort. First mail goes out in about $INTERVAL seconds."
echo -n "That will be about "
date --date "today $INTERVAL seconds"
while true; do
sleep $INTERVAL
(
printMailHeaders
printAssortedData
echo '.'
) | $SENDMAIL $VERBOSE -t -f "$FROM"
done
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA/i5LzJfKDstX6FxkRAnt+AKDJnzydRpoxcGJx7Pkrrbk6pu6FywCfVFmF 5b9YH2136pjzEm2epzdnIag= =JEFB -----END PGP SIGNATURE-----
-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (GNU/Linux) mQGiBD65tgcRBACpNiocl3GbQ2h5NjF4O/Jm9bjS9JKxbw9OMvxOAYOWJdaYdf5L gJ7xWgTOsCR69n/PW0SbHnQC/IseOqb+A+RztnCKWeJoNVY+pO8zPtgDaVAZahpY jT12r/fi/S2jir01/FzCFuG7cFCqIP/a40l4Q+PkPgg5h70P8+dTbGa1JwCgzi11 aXGin4MvVnjJhcWg9Cc4vcsD/AuuRNWaUQUfRWithBnE1mLL5c+KhiQIKfVZy23m bg0Fs/p5m7wxkwBnp305LzrFmp93Dpf71BIdzOrVwOXEMmPuzeipz+PmibhQbYMI xGGp2tlvixu9tW5Fp9zOJGuHRBu/wQJKQygIcBx2+z8FLt3xfqobsiXztZez0BmS vFfLBACX7h4l6hDlCwArEgC9rdj1SW5IB3nLpjj+8UvJCEqH30a1wgw7VVCLMiyu pgMcHEQkNZHwSpeOsIT9rjKscJC7FPbW5I1k+AyzEx5R0t7DPTX08MnHSB3bqteA 8JrJOj24VPxyZVyfwif2aeLXrv9Wth9/Ak0QUS9pbaFliyHh27QtRWR3YXJkIEou IEh1ZmYgKGVqaHVmZikgPGVkd2FyZC5odWZmQGFjbS5vcmc+iFcEExECABcFAj65 tgcFCwcKAwQDFQMCAxYCAQIXgAAKCRAl8oOy1foXGSMzAKC4tamk6RToU1nWUQzR VYEiTCMprACfWwZj+mdrkD8iNZOAToYdgqDHJS+IRgQSEQIABgUCPr0Y0AAKCRAl NgpxnIUd8ae1AKCcKsXWCUBpD3aPdZXxBVaPX1EP0wCePUqpS5AcJh5MSZywSfUp 7eQ8gGW5AQ0EPrm2CBAEAOIpIhwvr+Y4IYWXETDwxKG9kI7BA2woA7f/Ev0nx5u0 x9QkWitxQ/aCdfRsnpSRNjpMonzpPEruM5NuvHPOQPpKGb/AbqOyBBQ2yjjN+VQW MQfoUg7l3vgHMXkRo6euvEwKDPT3/tgeIaAVz1beCQHvimNNWNJp9Dtuqq1C2kFH AAMHBACfB5MFBXwV4dDp89RA80hlushllKD3RWESztlIBsFDJNHIxFWp3EDaJoZX TjSRgPR1ADKtcXmdYKyX05A1MmRVL+pjUiDRmzfbpSgoTfyMXzTMLpY/CU+Rp4hD 6ZfAxmQ5fbyJkWbl8FVscVXXHjzwK1ZMzWlyHZPu+3kvmXgK9YhGBBgRAgAGBQI+ ubYIAAoJECXyg7LV+hcZA4EAn1WzZeXPgB1V/MOifyGu7sAlEeJEAJwKKjdEErWX qLvO3ruE3lhzjRimWg== =j5BM -----END PGP PUBLIC KEY BLOCK-----
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Devl mailing list [EMAIL PROTECTED] http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl
