Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: Simple way to use ssh tunnels in scripts
Author: Solène
Date: 15 May 2019
Tags: ssh automation
Description:
While writing a script to backup a remote database, I did not know how
to
handle a ssh tunnel inside a script correctly/easily. A quick internet
search
pointed out this link to me:
[https://gist.github.com/scy/6781836](https://gist.github.com/scy/67818
36)
While I'm not a huge fan of the ControlMaster solution which consists
at
starting a ssh connection with ControlMaster activated, and tell ssh to
close
it, and don't forget to put a timeout on the socket otherwise it won't
close if
you interrupt the script.
But I really enjoyed a neat solution which is valid for most of the
cases:
$ ssh -f -L 5432:localhost:5432 user@host "sleep 5" && pg_dumpall
-p 5432 -h localhost > file.sql
This will create a ssh connection and make it go to background because
of `-f`
flag, but it will close itself after the command is run, `sleep 5` in
this
case. As we chain it quickly to a command using the tunnel, ssh will
only stops
when the tunnel is not used anymore, keeping it alive only the required
time
for the pg_dump command, not more. If we interrupt the script, I'm not
sure ssh
will stop immediately or only after it ran successfully the command
sleep, in
both cases ssh will stop correctly. There is no need to use a long
sleep value
because as I said previously, the tunnel will stay up until nothing
uses it.
You should note that the ControlMaster way is the only reliable way if
you need
to use the ssh tunnel for multiples commands inside the script.
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.