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>