Annotation of embedaddon/rsync/support/lsh.sh, revision 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>