Bedeutung von ssh-Option -t [Beantwortet]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
heinz
Beiträge: 516
Registriert: 20.12.2007 01:43:49

Bedeutung von ssh-Option -t [Beantwortet]

Beitrag von heinz » 23.03.2021 18:57:53

Hallo Zusammen,

habe heute das erste mal bei dem Programm ssh die Option -t verwenden muessen, um eine korrekte Funktion zu erreichen.
Leider habe ich (dank meiner miserablen Englischkenntnisse) nicht verstanden warum ich diese Option genau brauche.

Situation:
Ein Script auf einem "entfernten" Rechner welches ueber ssh ausgefuehrt wird um lokal angezeigt zu werden.
Innerhalb des Scriptes ein:

Code: Alles auswählen

read -sn1 -t1 -p "text"
welches so:

Code: Alles auswählen

xterm -e "ssh user@rechner bin/script.sh"
nicht richtig arbeitet.
Ein einzelner Tastendruck gibt die Taste zwar an read weiter aber man muss trotzallem Enter druecken um sie in die Variable $REPLY zu schreiben.
Auch die -p Option funktioniert nicht. Es wird kein Text angezeigt.
so:

Code: Alles auswählen

xterm -e "ssh -t user@rechner bin/script.sh"
funktioniert es wie es soll.

Kann mir jemand erklaeren warum dem so ist?

Gruss,
heinz
Zuletzt geändert von heinz am 24.03.2021 10:49:14, insgesamt 1-mal geändert.

Benutzeravatar
niemand
Beiträge: 14653
Registriert: 18.07.2004 16:43:29

Re: Bedeutung von ssh-Option -t

Beitrag von niemand » 23.03.2021 19:05:49

Antwort auf die im Titel gestellte Frage:
man ssh | grep "\-t" hat geschrieben:

Code: Alles auswählen

     -t      Erzwingt Pseudo-Terminal-Zuweisung. Dies kann zur Ausführung mehre‐
             rer, auf Screen-basierter Programme auf fernen Maschinen verwandt
             werden. Dies kann zur Implementierung von beispielsweise Menü-Dien‐
             sten sehr nützlich sein. Mehrere Optionen -t erzwingen die TTY-Zu‐
             weisung, selbst wenn ssh kein lokales TTY hat.
non serviam.

tijuca
Beiträge: 196
Registriert: 22.06.2017 22:12:20

Re: Bedeutung von ssh-Option -t

Beitrag von tijuca » 23.03.2021 19:07:15

Wie wäre es den englischen Text der Option einfach mal in einen Online Übersetzer einzufügen ...

Oder eben in die deutsche Manpage zu schauen.

Benutzeravatar
heinz
Beiträge: 516
Registriert: 20.12.2007 01:43:49

Re: Bedeutung von ssh-Option -t

Beitrag von heinz » 23.03.2021 19:36:36

tijuca hat geschrieben: ↑ zum Beitrag ↑
23.03.2021 19:07:15
Wie wäre es den englischen Text der Option einfach mal in einen Online Übersetzer einzufügen ...
Das ist eine Super Idee, auf die ich auch schon selbst gekommen bin.

Mein Problem dabei und auch mit dem deutschen Manpage-Ausschnitt von niemend ist:
Ich verstehe es trotzdem nicht... :oops:
Was z.B. ist eine Pseudo-Terminal-Zuweisung?
Und auch im weiteren:
Dies kann zur Implementierung von beispielsweise Menü-Diensten sehr nützlich sein.
ist fuer mich nicht sehr aufschlussreich. Sorry vlt. bin ich zu doof dafuer... :?

read ansich funktioniert ja, allerdings nicht die Optionen -p und -n...
Habe in all den Jahren noch nie diese Option -t benoetigt.

Ich kann mir ja zusammen reimen, dass read eine Pseudo-Terminal-Zuweisung benoetigt, da es sonst nicht richtig funktioniert aber ich wuesste halt gerne was das Benoetigte ueberhaupt ist...
Und warum ist read nur mit -n oder -p ein Menü-Dienst?

Fragende Gruesse,
heinz

Benutzeravatar
jph
Beiträge: 914
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: Bedeutung von ssh-Option -t

Beitrag von jph » 23.03.2021 20:41:22

Probier einfach mal den Unterschied zwischen

Code: Alles auswählen

$ ssh rechner journalctl
und

Code: Alles auswählen

$ ssh -t rechner journalctl
aus; das illustriert den Unterschied sehr gut.

Lässt sich übrigens mit RequestTTY yes in der ~/.ssh/config voreinstellen.

MSfree
Beiträge: 7189
Registriert: 25.09.2007 19:59:30

Re: Bedeutung von ssh-Option -t

Beitrag von MSfree » 23.03.2021 21:03:00

heinz hat geschrieben: ↑ zum Beitrag ↑
23.03.2021 19:36:36
Was z.B. ist eine Pseudo-Terminal-Zuweisung?
Nunja, ein Terminal ist so'n Ding mit Bildschirm und Tastatur, das eine Anbindung zu einem Rechner hat, früher mal über RS232.

Ein Pseudo-Terminal ist ein Softwareimplementierung, die der anderen Seite ein Terminal vorgaugelt.

Ohne -t wird keine Eingabeumleitung (deine Tastaturbefehle) an die Gegenseute übermittelt, nur die Ausgabe kommt zu dir zurück. Mit wird eben ein Terminal vorgegaukelt, das interaktive Aktionen, also Tastaturbefehle, erlaubt. Die Gegenseite erkennt dann, daß ein (Pseudo)Terminal am Ende hängt, nutzt also auch Informationen wie Breite und Höhe des Terminals, um Menügesteuerte Programme anpassen zu können.

Benutzeravatar
heinz
Beiträge: 516
Registriert: 20.12.2007 01:43:49

Re: Bedeutung von ssh-Option -t

Beitrag von heinz » 24.03.2021 10:48:49

@MSfree
Danke fuer die Erklaerung. Ich glaube ich verstehe es jetzt um einiges besser.
Es ist zwar etwas seltsam (fuer mich), dass man denkt ein Terminal zu benutzen, welches aber garkeines ist und man erst explizit sagen muss dass es eines sein soll, aber OK...

@jph
Auch Dir Danke.
Ja, die interaktive bedienung fehlt. So wie bei read -n

Vielen Dank fuer Eure Zeit.

Gruss,
heinz

Antworten