Me gustaría modificar mi conexión SSH existente a través de un script de shell. Entonces, si ejecuto un script existente de forma remota, me gustaría que abra un nuevo puerto para ser tunelizado.
Interactivamente puedo hacer esto a través de:
ubuntu@6c1a17c3864c:~$ ~C
ssh> -R 9000:localhost:9000
Como lo puse mucho más claramente de lo que pude: https://unix.stackexchange.com/questions/33557/using-an-already-established-ssh-channel .
Idealmente, me gustaría usar un script de shell para interactuar a través de los caracteres escapados para ajustar la conexión existente.
He visto algo como:
#!/bin/bash
# Attempt 1
echo -n '\r\f \~\~C -L 9000:localhost:9000'
# Attempt 2
echo -e '\r\f\~\C -R 9000:localhost:9000'
printf '\~\C -L 9000:localhost:9000'
netstat -taln
Así como algunas otras combinaciones.
He verificado que tanto echo como printf son componentes integrados de shell.
Estoy usando Bash 4.3.11 x86_64-pc-linux-gnu.
expect
script para lograr esto. ¿Pero por qué? Puede definir el reenvío de puertos en la línea de comandos mucho más fácil.