Toad (toad at amphibian.dyndns.org) wrote: > You can use an external supervisor process; any competent operating > system will provide you with a few options for this.
Whee! Something I'm actually capable of doing! :-) Look ma, no Java! Note that the ACTION variable *will* need to be customized before you run this script. As you can see, it doesn't actually do anything drastic, and if you don't have a mail user named "greg", it won't do anything useful either. Make sure you run it as the appropriate user. If you want it to stop your node, make sure it has permission to do so. Such arrangements are your responsibility as the node operator. -- Greg Wooledge | "Truth belongs to everybody." greg at wooledge.org | - The Red Hot Chili Peppers http://wooledge.org/~greg/ | -------------- next part -------------- #!/bin/sh # Freenet monitor script. Requires printf(1), nc(1) (netcat) and bc(1). # [cc] Counter-copyright 2003 Greg Wooledge. This program is in the public # domain. It may be used, distributed and/or modified without restrictions. # This program is provided "as is" without waranty of any kind, either # expressed or implied, including, but not limited to, the implied waranties of # merchantability and fitness for a particular purpose. The entire risk as # to the quality and performance of the program is with you. Should the # program prove defective, you assume the cost of all necessary servicing, # repair or correction. # You may be able to find older and/or newer versions of this program at # http://wooledge.org/~greg/fmonitor/ . Then again, you may not. # Basic algorithm: we check the Local mean traffic (queries per hour) # via the web interface (default port 8888) every 60 seconds. We keep # a running average of the last three values, to avoid weirdness from any # sudden spikes. # # Using the running average values, we keep track of the peak traffic # that the node has seen. If the running average for the node falls below # epslion percent of the peak, we do something. # Configuration variables: NODEHOST=127.0.0.1 NODEPORT=8888 LOADURL=/servlet/nodeinfo/networking/loadstats GREPSTRING='Local mean traffic' # The exact format of the line is somewhat hard-coded in the script below. # So it's not *completely* configurable using only these variables. SLEEPTIME=60 EPSILON=0.05 ACTION='echo Peak $peak last2 $last2 last1 $last1 now $now | mailx -s "Your node needs you" greg; exit 0' # Internal variables: peak=0 last2=0 last1=0 now=0 # Main loop: while :; do last2=$last1 last1=$now now=`printf "GET $LOADURL HTTP/1.0\n\n" | nc $NODEHOST $NODEPORT | grep "$GREPSTRING" | sed -e 's#^.*: ##' -e 's#</li>$##'` average=`printf "scale=2\n ($last2 + $last1 + $now) / 3\n" | bc` printf "%s %.2f\t%.2f\t%.2f\t%.2f\n" \ `date +%H:%M` $last2 $last1 $now $average # bc returns 1 if the expression is true. We can't do floats in /bin/sh. if [ `echo $average \> $peak | bc` = 1 ]; then peak=$average echo "** New peak $peak" elif [ `echo $average \< \($peak \* $EPSILON\) | bc` = 1 ]; then echo "** Load $average less than $EPSILON of peak $peak" eval $ACTION fi sleep $SLEEPTIME done -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 187 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20030513/f6767578/attachment.pgp>
