#!/bin/sh # # Start data_xp daemons for HP JetDirect printers. # Or maybe start data_xp daemons for Tektronix X-terms # or for data_wr processes on Alphas, or start the # AXIS print server daemon prosd. USAGE=" $0 {start|stop|check} [name] to start, stop or check all data_xp and prosd processes, or only those matching name. " #NAMES='r7lw p6lw r5lw fylw djlw solw otlw gllw njlw dclw colw rdlw rzlw mslw stlw brlw lklw' #NAMES='r7lw p6lw r5lw djlw solw otlw gllw njlw dclw colw rdlw rzlw mslw stlw brlw lklw' #NAMES='r7lw p6lw r5lw djlw solw otlw gllw njlw dclw colw rdlw rzlw mslw stlw lklw pglw' #NAMES='r7lw p6lw r5lw djlw solw otlw gllw njlw dclw colw rzlw mslw stlw lklw pglw' # NAMES='r7lw p7lw p6lw r5lw djlw solw otlw gllw njlw dclw colw rzlw mslw stlw lklw pglw' ## Nalini took njlw home around 8Oct2010 #NAMES='r7lw p7lw p6lw r5lw djlw solw otlw gllw dclw colw rzlw mslw stlw lklw pglw' #NAMES='r7lw p7lw p6lw r5lw djlw solw otlw sulw gllw dclw colw rzlw mslw stlw lklw pglw' ## Nalini brought njlw back on 20Jun2011 #NAMES='r7lw p7lw p6lw r5lw djlw solw otlw sulw gllw njlw dclw colw rzlw mslw stlw lklw pglw' ## Susan says sulw is cactus, disconnected 20Oct2011 #NAMES='r7lw p7lw p6lw r5lw djlw solw otlw gllw njlw dclw colw rzlw mslw stlw lklw pglw' #NAMES='r7lw o7lw p7lw p6lw r5lw djlw solw otlw gllw njlw dclw colw rzlw mslw stlw lklw pglw' ## p6lw jobs taken over by c0lw NAMES='r7lw o7lw p7lw r5lw djlw solw otlw gllw njlw dclw colw rzlw mslw stlw lklw pglw' case "$1" in 'start') for NAME in $NAMES; do if [ -n "$2" ]; then case "$NAME" in *"$2"* ) ;; * ) echo "Skipping $NAME"; continue;; esac fi LOG=/var/log/ps$NAME.log if [ -s $LOG ]; then gzip < $LOG > $LOG.old.gz fi case "$NAME" in *lw ) PORT=9100;; x* ) PORT=87;; d* ) PORT=88;; ps* ) PORT=prosd;; * ) PORT=87;; esac HOST=$NAME PROG='prog-undefined' ARGS= case "$NAME" in # So we do not need DNS aliases; or maybe the names were "wrong"... r7lw ) ARGS='-reconnect-when-idle';; r5lw ) ARGS='-reconnect-when-idle';; o7lw ) ARGS='-reconnect-when-idle';; colw ) ARGS='-reconnect-when-idle';; solw ) ARGS='-reconnect-when-idle';; lklw ) HOST=kyocera520;; esac if [ "$PORT" = prosd ]; then PROG=/usr/sms/share/axis/prosd ARGS="$ARGS rome.maths.usyd.edu.au /dev/ps$NAME $NAME pr1 netprinter" else PROG=/usr/sms/share/axis/data_xp ARGS="$ARGS -addr $HOST -port $PORT -pipe /dev/ps$NAME" fi # At lenny with udev, need to create devices on the fly... if [ ! -e /dev/ps$NAME ]; then rm -rf /dev/ps$NAME mknod -m 600 /dev/ps$NAME p chown 181:181 /dev/ps$NAME fi if /usr/local/sbin/su-start 181 181 /usr/sms/sbin/daemon $PROG $ARGS > $LOG 2>&1; then echo "Done: $PROG $ARGS" else echo "No go: $PROG $ARGS" fi done ;; 'stop') pattern='/usr/sms/share/axis/(data_x[p]|pros[d]) ' msg= if [ -n "$2" ]; then pattern="$pattern.*$2" msg=" to match $2" fi found=none while :; do pid=`ps -A -o pid,command | grep -E "$pattern" | sed -e 's/^ *//' -e 's/ .*//' | head -1` if [ "X$pid" != "X" ]; then ps u --pid $pid echo "Killing process $pid" kill $pid sleep 1 found=some else break fi done if [ "$found" = 'none' ]; then echo "No data_xp or prosd found$msg" exit 1 fi ;; 'check') pattern='/usr/sms/share/axis/(data_x[p]|pros[d]) ' if [ -n "$2" ]; then NAMES=$2 fi PS=`ps -A -o command | grep -E "$pattern"` for NAME in $NAMES; do LINE=`echo "$PS" | grep $NAME | head -1` if [ -n "$LINE" ]; then echo "OK: $LINE" else echo "No data_xp or prosd found for $NAME" fi done ;; * ) echo "Usage:" echo "$USAGE" exit 1 ;; esac