From: Wayne Davison Date: Thu, 11 Sep 2008 15:42:27 +0000 (-0700) Subject: A couple instant-rsyncd improvements: X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/794d033981cc87f8b9d2219b977df56873299ff8 A couple instant-rsyncd improvements: - Prompt the user for the parameters when missing. - Allow the creation of a module without a user+password. --- diff --git a/NEWS b/NEWS index 6703aa68..d34f5555 100644 --- a/NEWS +++ b/NEWS @@ -20,6 +20,11 @@ Changes since 3.0.4: MD5 checksum of any transferred file, or all files if --checksum was specified (when protocol 30 or above is in effect). + EXTRAS: + + - Added an "instant-rsyncd" script to the support directory, which makes + it easy to configure a simple rsync daemon in the current directory. + DEVELOPER RELATED: - Added more conditional debug output. diff --git a/support/instant-rsyncd b/support/instant-rsyncd index dcd87577..6ab1e66d 100755 --- a/support/instant-rsyncd +++ b/support/instant-rsyncd @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -e # instant-rsyncd lets you quickly set up and start a simple, unprivileged rsync # daemon with a single module in the current directory. I've found it @@ -12,34 +12,43 @@ # and once to log in to test the daemon. # -- Matt McCutchen -set -e - dir="$(pwd)" -if [ "$#" -lt 3 ]; then - echo "I would install an rsync daemon in $dir if you gave me" - echo "a module name, a port, and an rsync username." - exit 1 +echo +echo "This will setup an rsync daemon in $dir" + +if [ $# = 0 ]; then + IFS='' read -p 'Module name to create (or return to exit): ' module + [ ! "$module" ] && exit +else + module="$1" + shift fi -module="$1" -port="$2" -user="$3" -rsync="$4" -if [ ! "$rsync" ]; then - rsync=rsync +if [ $# = 0 ]; then + IFS='' read -p 'Port number the daemon should listen on [873]: ' port +else + port="$1" + shift fi +[ "$port" ] || port=873 -moduledir="${dir%/}/$module" +if [ $# = 0 ]; then + IFS='' read -p 'User name for authentication (empty for none): ' user +else + user="$1" + shift +fi -echo -echo "I'm about to install an rsync daemon in $dir." -echo "It will listen on port $port for requests giving rsync username $user" -echo "and the password you are about to specify. It will serve a module" -echo "$module corresponding to $moduledir." -echo +if [ "$user" ]; then + IFS='' read -s -p 'Desired password: ' password + echo +fi -IFS='' read -s -p 'Desired password: ' password +rsync="$1" +[ "$rsync" ] || rsync=rsync + +moduledir="${dir%/}/$module" mkdir "$module" @@ -50,17 +59,20 @@ port = $port use chroot = no [$module] - path = $module - read only = false - auth users = $user - secrets file = $module.secrets + path = $module + read only = false EOF -touch "$module".secrets -chmod go-rwx "$module".secrets -cat >"$module".secrets <>rsyncd.conf <<-EOF + auth users = $user + secrets file = $module.secrets + EOF + touch "$module".secrets + chmod go-rwx "$module".secrets + echo "$user:$password" >"$module".secrets + user="$user@" +fi cat >start <