Script SSH Interactive Console que necesita caracteres escapados

Script SSH Interactive Console que necesita caracteres escapados

Me gustaría modificar mi conexión SSH existente mediante un script de shell. Entonces, si ejecuto un script existente de forma remota, me gustaría que abra un nuevo puerto para tunelizarlo.

De forma interactiva puedo hacer esto a través de:

ubuntu@6c1a17c3864c:~$ ~C
ssh> -R 9000:localhost:9000

Como se expresó mucho más claramente de lo que podría:https://unix.stackexchange.com/questions/33557/using-an-already-establecido-ssh-channel.

Lo ideal sería utilizar un script de shell para interactuar a través de los caracteres de escape para ajustar la conexión existente.

He mirado 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

Además de algunas otras combinaciones.

He verificado que tanto echo como printf son componentes integrados del shell.

Estoy usando Bash 4.3.11 x86_64-pc-linux-gnu.

Respuesta1

Necesitaría expectun 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 funcionar:

#!/usr/bin/expect -f
set timeout 10
 exp_internal 1
spawn telnet $argv
expect "login:"
send "mylogin\n"
expect "Password:"
send "mypass\n"
expect '~$'
# Send some commands
close

Fuente

información relacionada