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.

Luis Alvarado
quelle

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.

Gilles 'SO - hör auf böse zu sein'
quelle
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'