Skript für die interaktive SSH-Konsole, die Escape-Zeichen benötigt

Skript für die interaktive SSH-Konsole, die Escape-Zeichen benötigt

Ich möchte meine bestehende SSH-Verbindung über ein Shell-Skript ändern. Wenn ich also ein vorhandenes Skript remote ausführe, möchte ich, dass es einen neuen Port öffnet, der getunnelt werden soll.

Interaktiv kann ich dies tun über:

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

Ich kann es viel deutlicher ausdrücken, als ich es könnte:https://unix.stackexchange.com/questions/33557/using-an-already-established-ssh-channel.

Idealerweise würde ich gerne über ein Shell-Skript zur Interaktion über die Escape-Zeichen nutzen, um die bestehende Verbindung anzupassen.

Ich habe mir so etwas angesehen:

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

Sowie einige andere Kombinationen.

Ich habe überprüft, dass sowohl echo als auch printf integrierte Shell-Funktionen sind.

Ich verwende Bash 4.3.11 x86_64-pc-linux-gnu.

Antwort1

expectDazu benötigen Sie ein Skript. Das Problem ist, dass diese Escape-Zeichen NICHT von Bash, sondern lokal von Ihrem SSH-Client ausgewertet werden. Beispiel, das funktionieren sollte:

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

Quelle

verwandte Informationen