#!/bin/sh # The path to your config file CONFIGFILE="@trackerddir@/etc/trackerd.conf" # The path to your pid file, should be the same as in your trackerd.conf PIDFILE="@trackerddir@/trackerd.pid" # The path to your status file, should be the same as in your trackerd.conf STATUSFILE="@trackerddir@/trackerd.status" # The path to your certificate, should be the same as in your trackerd.conf CERTIFICATE="@trackerddir@/etc/certificate.pem" # The path to your trackerd binary TRACKERD="@prefix@/sbin/trackerd" # Flags to pass to trackerd TRACKERDFLAGS="-d @trackerddir@ -ll -u" # Begin script PROG=$(basename $0) CMD=$1 if [ "$CMD" ]; then shift TRACKERDFLAGS="$TRACKERDFLAGS $*" fi if [ -f "@trackerddir@/etc/trackerd.flags" ]; then STARTUPFLAGS=$(cat "@trackerddir@/etc/trackerd.flags") TRACKERDFLAGS="$TRACKERDFLAGS $STARTUPFLAGS" fi checkpid() { RUNNING=0 if [ -f $PIDFILE ]; then PID=`cat $PIDFILE` if [ "x$PID" != "x" ]; then if kill -0 $PID 2>/dev/null ; then RUNNING=1 fi fi fi } checkrunning() { checkpid if [ $RUNNING -eq 0 ]; then echo "$PROG: $CMD: trackerd is not running" exit 1 fi } case $CMD in start) checkpid if [ $RUNNING -eq 1 ]; then echo "$PROG: $CMD: trackerd (pid $PID) already running" exit 1 fi if [ ! -f "$CERTIFICATE" ]; then $0 certificate fi if $TRACKERD $TRACKERDFLAGS; then echo "$PROG: $CMD: trackerd started" else echo "$PROG: $CMD: trackerd could not be started" fi ;; stop) checkrunning if kill $PID; then echo "$PROG: $CMD: trackerd stopped" else echo "$PROG: $CMD: trackerd could not be stopped" exit 1 fi ;; restart) checkpid if [ $RUNNING -eq 1 ]; then if kill $PID; then echo "$PROG: $CMD: trackerd stopped" else echo "$PROG: $CMD: trackerd could not be stopped" exit 1 fi fi if $TRACKERD $TRACKERDFLAGS; then echo "$PROG: $CMD: trackerd started" else echo "$PROG: $CMD: trackerd could not be started" fi ;; reload) checkrunning if kill -HUP $PID; then echo "$PROG: $CMD: trackerd reloaded" else echo "$PROG: $CMD: trackerd could not be reloaded" fi ;; config) grep -v "^#" $CONFIGFILE | grep -v "^$" | sort ;; configtest) $TRACKERD -t ;; certificate) HOSTNAME=$(hostname) openssl req -x509 -newkey rsa:1024 -subj "/CN=$HOSTNAME" -days 365 -nodes -keyout "$CERTIFICATE" -out "$CERTIFICATE" ;; status) if [ -f $STATUSFILE ]; then $TRACKERD -v awk ' function pad(number) { if(number < 10) return "0" number else return number } function ftime(time) { days = int(time / 86400) time = time % 86400 hours = int(time / 3600) time = time % 3600 minutes = int(time / 60) time = time % 60 seconds = time if(days > 0) return pad(days) ":" pad(hours) ":" \ pad(minutes) ":" pad(seconds) \ " days" else if(hours > 0) return pad(hours) ":" pad(minutes) ":" \ pad(seconds) " hours" else if(minutes > 0) return pad(minutes) ":" pad(seconds) \ " minutes" else return seconds " seconds" } function fbytes(bytes) { power = 0 while(bytes > (1024 ^ ++power)) ; value = sprintf("%.2f", bytes / (1024 ^ --power)) if(power == 4) return value " TB" else if(power == 3) return value " GB" else if(power == 2) return value " MB" else if(power == 1) return value " KB" else if(power == 0) if(bytes == 1) return bytes " byte" else return bytes " bytes" } { "date +%s" | getline now print "Up " ftime(now - $1) print "" print "Current servers: " $2 print "Total clients: " $3 print "Current users: " $4 print "Current files: " $5 print "Current size: " fbytes($6) } ' $STATUSFILE else echo "$PROG: $CMD: $STATUSFILE could not be found" fi ;; *) echo "Usage: $PROG [start | stop | restart | reload | config | configtest | certificate | status | help]" cat < EOF ;; esac