Script SSH Interactive Console que precisa de caracteres de escape

Script SSH Interactive Console que precisa de caracteres de escape

Gostaria de modificar minha conexão SSH existente por meio de um script de shell. Portanto, se eu executar um script existente remotamente, gostaria que ele abrisse uma nova porta para ser encapsulada.

Interativamente, posso fazer isso por meio de:

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

Como foi dito com muito mais clareza do que eu poderia:https://unix.stackexchange.com/questions/33557/using-an-already-established-ssh-channel.

Idealmente, eu gostaria de usar um script de shell para interagir por meio dos caracteres de escape para ajustar a conexão existente.

Eu olhei para 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

Bem como algumas outras combinações.

Eu verifiquei que echo e printf são integrados ao shell.

Estou usando o Bash 4.3.11 x86_64-pc-linux-gnu.

Responder1

Você precisaria de expectum script para conseguir isso. O problema é que esses caracteres de escape NÃO são avaliados pelo bash, mas localmente pelo seu cliente ssh. Exemplo que deve fazer o trabalho:

#!/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

Fonte

informação relacionada