update
changeset 0 55d66efee4e0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/update	Thu Nov 06 14:44:48 2008 +0100
@@ -0,0 +1,84 @@
+#!/bin/bash
+#
+# Added --fork compatibility to support multiple control sockets
+#
+# Original by ahu @ pdns-dev team
+# Modified by Daniel Selans <dan.s at hostdime.com>
+# 09.02.07
+#
+
+SOCKETDIR=/var/run # Leave off the trailing slash
+CHKFORK=`ps -C pdns_recursor --no-headers | wc -l`
+
+# Quick sanity check
+if [ CHKFORK = 0 ]
+then
+         echo "pdns_recursor is not running!"
+         exit
+fi
+
+TSTAMP=$(date +%s)
+
+VARIABLES="questions tcp-questions cache-entries concurrent-queries\
+            nxdomain-answers noerror-answers\
+            servfail-answers tcp-outqueries\
+            outgoing-timeouts nsspeeds-entries negcache-entries all-outqueries throttled-out\
+            cache-hits cache-misses answers0-1 answers1-10  answers10-100 answers100-1000 answers-slow\
+            qa-latency throttle-entries sys-msec user-msec  unauthorized-udp unauthorized-tcp client-parse-errors\
+            server-parse-errors"
+
+UVARIABLES=$(echo $VARIABLES | tr '[a-z]' '[A-Z]' | tr - _ )
+
+
+
+if [ $CHKFORK = 2 ]
+then
+         # Running with --fork
+         SOCKETS=`ls -t -1 $SOCKETDIR/pdns_recursor.controlsocket.* | head --lines 2`
+         FORK="yes"
+         COUNT=0
+
+         for i in $SOCKETS
+         do
+                 PID=`echo $i | cut -d . -f3`
+                 rec_control --socket-dir=$SOCKETDIR --socket-pid=$PID GET $VARIABLES |
+                 (
+                 for a in $UVARIABLES
+                 do
+                         read $a
+                 done
+                 rrdtool update pdns_recursor.$COUNT.rrd \
+                         -t \
+                         $(for a in $VARIABLES
+                         do
+                                 echo -n $a:
+                         done | sed 's/:$//' ) \
+                 $TSTAMP$(
+                         for a in $UVARIABLES
+                         do
+                                 echo -n :${!a}
+                         done)
+                 )
+                 COUNT=$(($COUNT + 1))
+         done
+
+else
+         rec_control --socket-dir=$SOCKETDIR  GET $VARIABLES |
+         (
+         for a in $UVARIABLES
+         do
+                 read $a
+         done
+         rrdtool update pdns_recursor.rrd \
+                 -t \
+                 $(for a in $VARIABLES
+                 do
+                         echo -n $a:
+                 done | sed 's/:$//' ) \
+         $TSTAMP$(
+                 for a in $UVARIABLES
+                 do
+                         echo -n :${!a}
+                 done)
+         )
+fi