Invio di input a una sessione dello schermo dall'esterno


18

Il mio scenario è questo:

Ho una sessione dello schermo in esecuzione in una posizione remota. All'interno di questa schermata è presente un programma basato su console. Se eseguito senza schermo, questo programma si avvia nel terminale e accetta comandi sul suo input standard.

Quello che voglio è un modo per inviare un comando da remoto allo schermo in modo che questo comando venga ricevuto dal programma della console. Forse così:

Il mio PC -> SSH Invia messaggio Auto -> Sessione schermo -> Programma (comando di esecuzione ricevuto)

Quindi da un PC remoto posso inviare comandi SSH allo schermo che li invia al programma. Il programma li accetta e li esegue.

Risposte:


17

Se ho capito bene, si desidera inviare input a un programma in esecuzione all'interno di una sessione dello schermo. Puoi farlo con il stuffcomando dello schermo . Utilizzare l' -Xopzione dello schermo per eseguire un comando in una sessione dello schermo senza collegarsi ad esso.

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

Se si desidera visualizzare l'output del programma, vedere i hardcopy, loge logfilecomandi.


Ho già provato il comando stuff ma invia solo comandi che provengono dallo schermo. Vedete che accetta solo i comandi relativi allo schermo, non il programma che sto usando correlato.
Luis Alvarado,

@CYREX: stuffinvia i caratteri, esattamente come se li avessi digitati. Cosa hai provato esattamente, qual è stato l'effetto desiderato e cosa è successo invece?
Gilles 'SO- smetti di essere malvagio' il

Vedo che hai la parte -p. Non l'ho avuto. Aggiunta quella parte e sta inviando il comando ora, ma come posso premere INVIO per ciascun comando?
Luis Alvarado,

Trovato. Aggiungi $ prima delle virgolette e contiene C come escape. Come questa -X roba $ 'show users \ n'
Luis Alvarado

@CYREX: -pè necessario (o almeno una buona idea) se c'è più di una finestra. Per "premere Invio", basta includere una nuova riga nell'argomento (cioè all'interno delle virgolette), come ho fatto.
Gilles 'SO- smetti di essere malvagio' il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.