File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / rsync / support / lsh.sh
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 00:32:36 2021 UTC (3 years, 4 months ago) by misho
Branches: rsync, MAIN
CVS tags: v3_2_3, HEAD
rsync 3.2.3

    1: #!/bin/sh
    2: # This script can be used as a "remote shell" command that is only
    3: # capable of pretending to connect to "localhost".  This is useful
    4: # for testing or for running a local copy where the sender and the
    5: # receiver needs to use different options (e.g. --fake-super).  If
    6: # we get a -l USER option, we try to use "sudo -u USER" to run the
    7: # command.
    8: 
    9: user=''
   10: do_cd=y # Default path is user's home dir (just like ssh) unless host is "lh".
   11: 
   12: while : ; do
   13:     case "$1" in
   14:     -l) user="$2"; shift; shift ;;
   15:     -l*) user=`echo "$1" | sed 's/^-l//'`; shift ;;
   16:     --no-cd) do_cd=n; shift ;;
   17:     -*) shift ;;
   18:     localhost) shift; break ;;
   19:     lh) do_cd=n; shift; break ;;
   20:     *) echo "lsh: unable to connect to host $1" 1>&2; exit 1 ;;
   21:     esac
   22: done
   23: 
   24: if [ "$user" ]; then
   25:     prefix=''
   26:     if [ $do_cd = y ]; then
   27: 	home=`perl -e "print((getpwnam('$user'))[7])"`
   28: 	prefix="cd '$home' &&"
   29:     fi
   30:     sudo -H -u "$user" sh -c "$prefix $*"
   31: else
   32:     if [ $do_cd = y ]; then
   33: 	cd || exit 1
   34:     fi
   35:     eval "${@}"
   36: fi

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>