Attachment @ SSH tunnel howto and hints file_download
2018-10-26
2018
10-26
«ssh_tunnels_cron.sh»
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash

#   m     h  dom mon dow   command
#   *  8-19  *   *   1-5   /opt/ssh_tunnels_cron.sh start
#   5    20  *   *   1-5   /opt/ssh_tunnels_cron.sh stop

ssh_socket="/tmp/ssh_tunnel_myuser.sock"
ssh_user="myuser"
tunnels="-R *:10022:localhost:22   $tunnels"
tunnels="-R *:13000:localhost:3000 $tunnels"
tunnels="-R *:13001:localhost:3001 $tunnels"
tunnels="-R *:15910:localhost:5910 $tunnels"
tunnels="-L   10022:localhost:22   $tunnels" # "check alive" tunnel for on an eventual IP change
config="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5"
options="-f -nNT -M -S $ssh_socket -l $ssh_user -q $config $tunnels"

case "$1" in
  start)
    # stop it if already running
    ssh $config -o BatchMode=yes -o ConnectTimeout=3 -p 10022 $ssh_user@localhost exit > /dev/null 2> /dev/null && exit 0
    /opt/ssh_tunnels_cron.sh stop # paranoia
    # start it
    exec ssh $options `/opt/bin/getip_casa` > /dev/null 2> /dev/null
    ;;

  stop)
    ssh -S $ssh_socket -O exit xxx  > /dev/null 2> /dev/null ; sleep 2
    pkill -f -QUIT "ssh.*$ssh_user" > /dev/null 2> /dev/null # paranoia
    ;;

  *)
    echo "Usage: `basename $0` <start|stop>"
esac