File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / rsync / support / lsh.sh
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Oct 14 07:51:15 2013 UTC (10 years, 8 months ago) by misho
Branches: rsync, MAIN
CVS tags: v3_1_2p5, RSYNC3_1_0, HEAD
v 3.1.0

    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.
   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:     *) echo "lsh: unable to connect to host $1" 1>&2; exit 1 ;;
   20:     esac
   21: done
   22: 
   23: if [ "$user" ]; then
   24:     prefix=''
   25:     if [ $do_cd = y ]; then
   26: 	home=`perl -e "print((getpwnam('$user'))[7])"`
   27: 	prefix="cd '$home' &&"
   28:     fi
   29:     sudo -H -u "$user" sh -c "$prefix $*"
   30: else
   31:     if [ $do_cd = y ]; then
   32: 	cd || exit 1
   33:     fi
   34:     eval "${@}"
   35: fi

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