Senden von Eingaben an eine Bildschirmsitzung von außen


18

Mein Szenario ist folgendes:

Ich habe eine Bildschirmsitzung an einem Remotestandort. In diesem Bildschirm befindet sich ein Programm auf Konsolenbasis. Wenn das Programm ohne Bildschirm ausgeführt wird, startet es im Terminal und akzeptiert Befehle über die Standardeingabe.

Was ich möchte, ist eine Möglichkeit, aus der Ferne einen Befehl an den Bildschirm zu senden, damit dieser Befehl vom Konsolenprogramm empfangen wird. Vielleicht so:

Mein PC -> SSH-Nachricht automatisch senden -> Bildschirmsitzung -> Programm (Run-Befehl empfangen)

So kann ich von einem entfernten PC aus über SSH-Befehle an den Bildschirm senden, der sie an das Programm sendet. Das Programm akzeptiert sie und führt sie aus.

Antworten:


17

Wenn ich das richtig verstehe, möchten Sie Eingaben an ein Programm senden, das in einer Bildschirmsitzung ausgeführt wird. Sie können dies mit dem stuffBefehl screen tun . Verwenden Sie die Bildschirmoption -X, um einen Befehl in einer Bildschirmsitzung auszuführen, ohne eine Verknüpfung zu erstellen.

screen -S sessionname -p windowname -X stuff 'command1
command2
'

Wenn Sie die Ausgabe des Programms sehen möchten, finden Sie in den hardcopy, logund logfileBefehle.


Ich habe bereits den Befehl stuff ausprobiert, aber er sendet nur Befehle, die vom Bildschirm stammen. Sie sehen, es werden nur die Befehle akzeptiert, die sich auf den Bildschirm beziehen, nicht die vom Programm verwendeten.
Luis Alvarado

@CYREX: stuffSendet Zeichen genau so, als hätten Sie sie eingegeben. Was genau haben Sie versucht, was war die beabsichtigte Wirkung und was ist stattdessen passiert?
Gilles 'SO- hör auf böse zu sein'

Ich sehe, du hast den -p Teil. Ich hatte das nicht. Fügte diesen Teil hinzu und es sendet den Befehl jetzt, aber wie kann ich die EINGABETASTE für jeden Befehl drücken?
Luis Alvarado

Fand es. Addint $ vor den Anführungszeichen und mit C wie darin entgeht. So -X stuff $ 'show users \ n'
Luis Alvarado

@CYREX: -pist notwendig (oder zumindest eine gute Idee), wenn es mehr als ein Fenster gibt. Um die Eingabetaste zu drücken, fügen Sie einfach eine neue Zeile in das Argument ein (dh in die Anführungszeichen), wie ich es getan habe.
Gilles 'SO - hör auf, böse zu sein'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.