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.
bash
ssh
shell
escape-characters
escape-sequences
Luke Exton
fuente
fuente
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.Respuestas:
Necesitarías un
expect
script para lograr esto. El problema es que estos caracteres de escape NO son evaluados por bash, sino localmente por su cliente ssh. Ejemplo que debería hacer el trabajo:Fuente
fuente