#!/bin/bash CLIENTINFO=/auto/clientinfo LOGFILE==/software/grhat/logs/ UPIPS="" DOWNIPS="" UPHOSTS="" DOWNHOSTS="" SUCCESSHOSTS="" FAILEDHOSTS="" GREP="." if [ z"$1" = z--target ]; then shift GREP=$1 shift fi name=`echo "$0" | sed "s/^\.\///"` if [ `echo "$name" | grep "/" | wc -l` -gt 0 ]; then echo "You must run $name from the directory it is in" exit 999 fi echo -e "\n----------------" >> log echo "Running command $@" >> log for MAC in $CLIENTINFO/*:*:*:*:*:* do IP=`cat $MAC/ip 2>/dev/null` if [ -z $IP ]; then echo "Can't read IP for `basename $MAC`, skipping" continue fi HOSTNAME=`cat $MAC/hostname 2>/dev/null` if [ -z $HOSTNAME ]; then echo "Can't read HOSTNAME for `basename $MAC`, skipping" continue fi if fping -q $IP 2>/dev/null; then UPIPS="$UPIPS $IP" UPHOSTS="$UPHOSTS $HOSTNAME" if ! grep -q $GREP $MAC/target; then echo "Skipping on $HOSTNAME because target is `cat $MAC/target`" continue fi echo "Running on $IP/$HOSTNAME" | tee -a log # -t alarm 3 ssh -o 'StrictHostKeyChecking=no' -o "FallBackToRsh no" -o "BatchMode yes" root@$IP "$@" 2>&1 | tee -a log if [ $? -eq 0 ]; then SUCCESSHOSTS="$SUCCESSHOSTS $IP/$HOSTNAME" else FAILEDHOSTS="$FAILEDHOSTS $IP/$HOSTNAME" fi else DOWNIPS="$DOWNIPS $IP" DOWNHOSTS="$DOWNHOSTS $HOSTNAME" fi done echo "Succeeded on: $SUCCESSHOSTS" | tee -a log echo "Failed on: $FAILEDHOSTS" | tee -a log echo "Up IPs: $UPIPS" | tee -a log echo "Down IPs: $DOWNIPS" | tee -a log echo "Up Hosts: $UPHOSTS" | tee -a log echo "Down Hosts: $DOWNHOSTS" | tee -a log echo | tee -a log