Wie kann ich den Befehlszeilen-Telnet-Client verwenden, um eine unformatierte Verbindung wie PuTTY zu öffnen?

8

Ich muss Telnet verwenden, um mit einem Socket-Server zu kommunizieren, der kein Standard-Telnet-Server ist. Ich möchte keine Telnet-Verhandlungen oder Eingriffe in die Daten.

Dies ist in PuTTy als 'Raw-Modus' verfügbar und ich benötige die gleiche Funktionalität unter Linux.

Eden
quelle
Ich fügte hinzu, dass ich einen Befehlszeilen- Telnet-Client benötige (daher funktioniert Putty unter Linux bei mir nicht).
Eden
Ich verbinde mich mit einem MOXA-Produkt, bei dem es sich um einen TCP-Server handelt, um eine Remoteverbindung mit einer seriellen Schnittstelle (eines älteren Produkts) herzustellen. Es muss roh sein, damit alle Tastenanschläge unverändert gesendet werden.
Eden
Grundsätzlich brauche ich "Telnet-ähnliche" Funktionen, aber ohne das Protokoll. Ich habe auch netcat (oben vorgeschlagen) ausprobiert, aber das hat nicht gut funktioniert - es befindet sich im Zeilenbearbeitungsmodus und Tastenanschläge wie ^ C werden nicht übergeben.
Eden
Schauen socatSie sich als weiteren Hinweis an , es ist viel funktionsreicher als netcat; Vielleicht können Sie es nutzen.
sr_

Antworten:

11

Verwenden Sie netcat, es bietet Befehlszeilen-Raw-Sockets, ein sehr praktisches Dienstprogramm. Ich verwende es häufig, um Daten zwischen Servern zu verschieben, wenn keine Verschlüsselung erforderlich ist, zum Beispiel:

Server 1

# nc -l -p 1234 | zcat | mysql -u root databaseName

Server2

# mysqldump -u root databaseName | gzip | nc Server1 1234
Geoffrey
quelle
Dies ist ein großartiger Tipp! Als ich es jedoch zwischen zwei Terminalfenstern unter MacOS versuchte, war die erste Zeile fehlerhaft. Meine Manpage für nc sagt, dass es ein Fehler ist, -p mit -l zu verwenden. Es funktionierte wie ein Champion, als ich das -p
RufusVS
5

Warum nicht einfach PuTTY verwenden? Wenn Ihnen die Funktionalität bereits gefällt, führen Sie sie einfach aus. PuTTY ist für Linux oder Windows verfügbar

Wie bereits in den Kommentaren erwähnt, ist Telnet nicht roh - es erwartet, dass bestimmte Protokolle eingehalten werden.

Rory Alsop
quelle
1
+1 Rory. Telnet ist nicht roh. telnet> Wenn Sie an der Eingabeaufforderung "Optionen festlegen" verwenden , werden die Protokolle in Aktion angezeigt.
Stephen Quan
Der Kitt-RAW-Modus ist nicht wirklich RAW. Wenn Sie die Eingabetaste drücken, wird CR / LF gesendet.
Eddyq
2

Sie können Telnet verwenden, um eine Verbindung zu einem beliebigen Port herzustellen, vorausgesetzt, dieser Port hört etwas ab und es wird nicht von einer Firewall blockiert.

telnet alt1.aspmx.l.google.com 25
telnet google.com 80

Wird alles gut funktionieren. Sie müssen jedoch wissen, welches Protokoll vom anderen Ende der Verbindung verwendet wird, da es sonst irgendwie sinnlos ist.

Beachten Sie, dass Telnet Pakete unverschlüsselt sendet.

Sardathrion - gegen SE-Missbrauch
quelle
5
Achtung: Telnet scheint "roh" zu sein, ist es aber nicht. Es gibt bereits einige Protokollebenen, auch wenn diese begrenzt sind. Was versuchst du hier zu erreichen?
Ouki
@Ouki, das TELNET- Protokoll ist sicher ziemlich komplex. Das Telnet -Programm kehrt normalerweise in einen unformatierten Betriebsmodus zurück, wenn keine Verbindung zu einem TELNET-Server hergestellt wird.
vonbrand
0

Sehr alt, aber ich fand, dass dies für eine MOXA-Einheit funktioniert:

stty raw && nc <ip> 23 && stty sane
smp
quelle
0

Nach all den Jahren immer noch relevant.

Dies funktioniert einwandfrei ~/.bash_aliases, indem eine moxaShell in einer Registerkarte ohne das lokale Echo geöffnet wird : (Parameter ist die Moxa-Portnummer)

function moxat(){
  mate-terminal --tab --title="moxa1 $1" -e "bash -c 'stty raw -echo && \ 
  nc <ip> $1 && stty sane'" 
}
OMR
quelle
-1

Verwenden Sie genau diese Linie:

sudo socat tcp-l:2023,reuseaddr,fork exec:/bin/login,pty,setsid,setpgid,stderr,ctty

Auf diese Weise können Sie eine Verbindung mit einem Raw-Socket von Moxa herstellen und eine Eingabeaufforderung auf dem Host-Computer erhalten. Von dort aus können Sie problemlos Telnet oder SSH nach Belieben auf jedes System übertragen.

Pyrofer
quelle