#!/bin/sh # Dist v1.3.3 (c) 24.6.98 by Andreas Ley (u) 13.5.2004 # Distribute cluster and package configuration files usage() { echo "Usage: `basename $0` [-q] [-s subset] [-n] [-d host] [filename [...]]" >&2 echo "-q quiet mode" >&2 echo "-s select subset" >&2 echo "-n dry run, show what would have been transferred" >&2 echo "-d destination host" >&2 exit 1 } trace=false verbose=true while getopts hxqs:nd: OPTION; do case ${OPTION} in h) sed '1d;s/^# *//;/^$/q' $0; usage;; x) set -x; trace=true;; q) verbose=false;; s) subset=".${OPTARG}";; n) opts="${opts} -n";; d) host="${OPTARG}";; ?) usage;; esac done shift $(($OPTIND - 1)) PATH=$PATH:/usr/machine/bin:/usr/machine/sbin localnode=`hostname` ${verbose} && opts="${opts} -v" if test $# -eq 0; then id=`id -u` if test ${id} -eq 0; then set -- `grep '^/' /etc/cluster/files${subset}` else set -- `for file in \`grep '^/' /etc/cluster/files${subset}\`; do uid=\`stat -u ${file} 2>/dev/null\`; test ${uid:-0} -eq ${id} && echo ${file}; done` fi if test $# -eq 0; then echo "There's nothing you can copy!" >&2 exit 1 fi else for file do case "${file}" in /*) :;; *) echo "Absolute path needed" >&2 exit 1;; esac done fi fping -a -r1 ${host} /dev/null | while read node; do if test "${node}" != "${localnode}" -a "${node}" != "test-${localnode}"; then ${verbose} && echo "Copying to ${node}..." for file do rsync ${opts} -axRS --no-implied-dirs -e ssh1 --delete --exclude=lost+found --exclude=.Xauthority --exclude=.ssh/random_seed --include-from=/etc/cluster/files${subset} "${file}" ${node}:/ done | egrep -v '^building file list \.\.\. done$|/$|^wrote [0-9]* bytes read [0-9]* bytes [0-9.]* bytes/sec$|^total size is [0-9]* speedup is [0-9.]*$|^$' fi done exit 0