Annotation of embedaddon/rsync/support/instant-rsyncd, revision 1.1

1.1     ! misho       1: #!/bin/bash
        !             2: 
        !             3: # instant-rsyncd lets you quickly set up and start a simple, unprivileged rsync
        !             4: # daemon with a single module in the current directory.  I've found it
        !             5: # invaluable for quick testing, and I use it when writing a list of commands
        !             6: # that people can paste into a terminal to reproduce a daemon-related bug.
        !             7: # Sysadmins deploying an rsync daemon for the first time may find it helpful as
        !             8: # a starting point.
        !             9: #
        !            10: # Usage: instant-rsyncd MODULE PORT RSYNCD-USERNAME [RSYNC-PATH]
        !            11: # The script asks for the rsyncd user's password twice on stdin, once to set it
        !            12: # and once to log in to test the daemon.
        !            13: # -- Matt McCutchen <matt@mattmccutchen.net>
        !            14: 
        !            15: set -e
        !            16: 
        !            17: dir="$(pwd)"
        !            18: 
        !            19: echo
        !            20: echo "This will setup an rsync daemon in $dir"
        !            21: 
        !            22: if [ $# = 0 ]; then
        !            23:        IFS='' read -p 'Module name to create (or return to exit): ' module
        !            24:        [ ! "$module" ] && exit
        !            25: else
        !            26:        module="$1"
        !            27:        shift
        !            28: fi
        !            29: 
        !            30: if [ $# = 0 ]; then
        !            31:        IFS='' read -p 'Port number the daemon should listen on [873]: ' port
        !            32: else
        !            33:        port="$1"
        !            34:        shift
        !            35: fi
        !            36: [ "$port" ] || port=873
        !            37: 
        !            38: if [ $# = 0 ]; then
        !            39:        IFS='' read -p 'User name for authentication (empty for none): ' user
        !            40: else
        !            41:        user="$1"
        !            42:        shift
        !            43: fi
        !            44: 
        !            45: if [ "$user" ]; then
        !            46:        IFS='' read -s -p 'Desired password: ' password
        !            47:        echo
        !            48: fi
        !            49: 
        !            50: rsync="$1"
        !            51: [ "$rsync" ] || rsync=rsync
        !            52: 
        !            53: moduledir="${dir%/}/$module"
        !            54: 
        !            55: mkdir "$module"
        !            56: 
        !            57: cat >rsyncd.conf <<EOF
        !            58: log file = rsyncd.log
        !            59: pid file = rsyncd.pid
        !            60: port = $port
        !            61: use chroot = no
        !            62: 
        !            63: [$module]
        !            64:     path = $module
        !            65:     read only = false
        !            66: EOF
        !            67: 
        !            68: if [ "$user" ]; then
        !            69:        cat >>rsyncd.conf <<-EOF
        !            70:            auth users = $user
        !            71:            secrets file = $module.secrets
        !            72:        EOF
        !            73:        touch "$module".secrets
        !            74:        chmod go-rwx "$module".secrets
        !            75:        echo "$user:$password" >"$module".secrets
        !            76:        user="$user@"
        !            77: fi
        !            78: 
        !            79: cat >start <<EOF
        !            80: #!/bin/bash
        !            81: set -e
        !            82: cd \`dirname \$0\`
        !            83: ! [ -e rsyncd.pid ] || {
        !            84:        echo "Is the daemon already running?  If not, delete rsyncd.pid."
        !            85:        exit 1
        !            86: }
        !            87: $rsync --daemon --config=rsyncd.conf
        !            88: EOF
        !            89: chmod +x start
        !            90: 
        !            91: cat >stop <<"EOF"
        !            92: #!/bin/bash
        !            93: set -e
        !            94: cd `dirname $0`
        !            95: ! [ -e rsyncd.pid ] || kill -s SIGTERM $(< rsyncd.pid)
        !            96: EOF
        !            97: chmod +x stop
        !            98: 
        !            99: path="rsync://$user$(hostname):$port/$module/"
        !           100: 
        !           101: if ./start; then
        !           102:        sleep .2
        !           103:        echo
        !           104:        echo "I ran the start command for the daemon.  The log file rsyncd.log says:"
        !           105:        echo
        !           106:        cat rsyncd.log
        !           107:        echo
        !           108:        echo "You can start and stop it with ./start and ./stop respectively."
        !           109:        echo "You can customize the configuration file rsyncd.conf."
        !           110:        echo
        !           111:        echo "Give rsync the following path to access the module:"
        !           112:        echo "    $path"
        !           113:        echo
        !           114:        if [ "$user" ]; then
        !           115:                echo "Let's test the daemon now.  Enter the password you chose at the prompt."
        !           116:        else
        !           117:                echo "Let's test the daemon now."
        !           118:        fi
        !           119:        echo
        !           120:        echo '$' $rsync --list-only "$path"
        !           121:        $rsync --list-only "$path"
        !           122:        echo
        !           123:        echo "You should see an empty folder; it's $moduledir."
        !           124: else
        !           125:        echo "Something went wrong.  Do you see an error message?"
        !           126: fi

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