mail-on-failure
is a simple post-*
hook that sends mails to the user
in case the synchronization failed, in the style of fetchmail's messages
about authentication failures.
When synchronization fails, $USER
receives a mail with the following
subject containing the logs of the synchronization:
[smd] sync with $endpoint failed
When a subsequent synchronization attempt is successful, the $USER
is
notified with the following message:
[smd] sync with $endpoint succeeded
Note that the mail is sent with the mail
command, thus local
delivery has to be functional.
Ssh can share multiple sessions over a single network connection. This feature allows to speedup connections.
The persistent-ssh
script is a pre-*
hook that
starts (if necessary) a mother connection the first time that
it is needed. To make this hook work properly, you have to
setup ssh as explained in the following.
Your .ssh
directory should have permission 700
, and your
.ssh/config
file should look like this, where smd-server-foo
is the SERVERNAME
specified in your smd config file:
Host smd-server-foo
ControlPath ~/.ssh/master-socket-%l-%r@%h:%p
ControlMaster auto
PermitLocalCommand yes
LocalCommand ln -sf ~/.ssh/master-socket-%l-%r@%h:%p ~/.ssh/master-socket-smd-server-foo
BatchMode yes
Compression yes
Hostname your.real.server.name
User you
The key ingredient is to obtain standard name for the master socket of a
given endpoint, in that case ~/.ssh/master-socket-smd-server-foo
for
the endpoint smd-server-foo
. Refer the ssh_config
man page for a
detailed explanation of ControlMaster
and ControlPath
.
Note that you may want to put the first four lines also in a more
generic configuration entry, so that every ssh connection to your
server can benefit from connection sharing. For example, a complete
ssh configuration file for your.real.server.name
may look like
the following:
Host smd-server-foo
ControlPath ~/.ssh/master-socket-%l-%r@%h:%p
ControlMaster auto
PermitLocalCommand yes
LocalCommand ln -sf ~/.ssh/master-socket-%l-%r@%h:%p ~/.ssh/master-socket-smd-server-foo
BatchMode yes
Compression yes
Hostname your.real.server.name
User you
Host your.real.server.name
ControlPath ~/.ssh/master-socket-%l-%r@%h:%p
ControlMaster auto
PermitLocalCommand yes
LocalCommand ln -sf ~/.ssh/master-socket-%l-%r@%h:%p ~/.ssh/master-socket-smd-server-foo