Script SSH Interactive Console que precisa de caracteres de escape

3

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

Interativamente, posso fazer isso via:

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

Conforme colocado muito mais claramente do que eu poderia: link .

Idealmente, eu gostaria de usar um script de shell para interagir através 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

Além de algumas outras combinações.

Eu verifiquei que o echo e o printf são internos do shell.

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

    
por Luke Exton 13.02.2016 / 01:40

1 resposta

0

Você precisaria do script expect 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

    
por 13.02.2016 / 11:27