Resilient SSH Tunnel

#!/bin/bash

tunnel_entrance_port=13306
tunnel_end=username@re.mo.te.ip
destination=127.0.0.1
destination_port=3306

# Use netcat to connect to tunnel entrance port. If its exit code is not zero, the tunnel needs to be brought up
nc -w1 localhost $tunnel_entrance_port > /dev/null
if [[ $? -ne 0 ]]; then
        echo "creating new tunnel for MySQL"
        /usr/bin/ssh -f -N -L $tunnel_entrance_port:$destination:$destination_port $tunnel_end
        if [[ $? -eq 0 ]]; then
                echo "  tunnel to $destination through $tunnel_end created successfully"
        else
                echo "  an error occurred creating a tunnel to $destination through $tunnel_end"
        fi
fi

Leave a Reply

Your email address will not be published. Required fields are marked *