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

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=''
1.1.1.2 ! misho      10: do_cd=y # Default path is user's home dir (just like ssh) unless host is "lh".
1.1       misho      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 ;;
1.1.1.2 ! misho      19:     lh) do_cd=n; shift; break ;;
1.1       misho      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>