home *** CD-ROM | disk | FTP | other *** search
- : Copy a file from any machine to any other machine.
- usage="Usage: $0 [machine!]from-file [machine!]to-file"
- PATH=/usr/local:/bin:/usr/bin
- CDPATH=
- case $# in
- 2) :
- ;;
- *) echo "$usage" 1>&2
- exit 1
- esac
- from=$1 to=$2
- case $from in
- *!*) IFS="!"
- set $from
- case $# in
- 2) from_mach=$1 from_file=$2 IFS=" "
- ;;
- *) echo "$usage" 1>&2
- exit 1
- esac
- ;;
- *) from_file=$from
- esac
- case "$from_file" in
- "") echo "$usage" 1>&2
- exit 1
- esac
- case $to in
- *!*) IFS="!"
- set $to
- case $# in
- 2) to_mach=$1 to_file=$2 IFS=" "
- ;;
- *) echo "$usage" 1>&2
- exit 1
- esac
- ;;
- *) to_file=$to
- esac
- case "$to_file" in
- "") echo "$usage" 1>&2
- exit 1
- esac
- case "$from_mach" in
- "$to_mach")
- : machines equal
- case "$to_mach" in
- "") : local
- cp "$from_file" "$to_file"
- ;;
- *) : remote
- rsh "$to_mach" "cp $from_file $to_file"
- ;;
- esac
- ;;
- *) : machines not equal
- case "$to_mach" in
- "") : to local
- if test -d "$to_file"
- then rsh -e "$from_mach" "cat $from_file" >"$to_file/`basename $from_file`"
- else rsh -e "$from_mach" "cat $from_file" >"$to_file"
- fi
- ;;
- *) : to remote
- case "$from_mach" in
- "") : from local
- rsh -i "$to_mach" "if test -d $to_file; then cat >$to_file/`basename $from_file`; else cat >$to_file; fi" <"$from_file"
- ;;
- *) : from remote
- rsh -e "$from_mach" "cat $from_file" | rsh -i "$to_mach" "if test -d $to_file; then cat >$to_file/`basename $from_file`; else cat >$to_file; fi"
- ;;
- esac
- ;;
- esac
- ;;
- esac
-