Annotation of embedaddon/rsync/support/lsh.sh, revision 1.1.1.1

1.1       misho       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>