File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / rsync / support / lsh
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Fri Feb 17 15:09:30 2012 UTC (12 years, 4 months ago) by misho
Branches: rsync, MAIN
CVS tags: rsync3_0_9p0, RSYNC3_0_9, HEAD
rsync

    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:     [ $do_cd = y ] && cd
   32:     eval "${@}"
   33: fi

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