Wysyłanie danych wejściowych do sesji ekranowej z zewnątrz


18

Mój scenariusz jest następujący:

Mam sesję ekranu uruchomioną w zdalnej lokalizacji. Wewnątrz tego ekranu znajduje się program oparty na konsoli. Program uruchamiany bez ekranu uruchamia się w terminalu i akceptuje polecenia na swoim standardowym wejściu.

Chcę, aby zdalnie wysłać polecenie do ekranu, aby to polecenie zostało odebrane przez program konsoli. Może tak:

Mój komputer -> SSH Send Msg Auto -> Screen Session -> Program (otrzymano polecenie Run)

Tak więc ze zdalnego komputera mogę wysyłać polecenia SSH na ekran, który wysyła je do programu. Program je akceptuje i wykonuje.

Odpowiedzi:


17

Jeśli dobrze rozumiem, chcesz wysłać dane wejściowe do programu działającego w sesji ekranowej. Możesz to zrobić za pomocą stuffpolecenia screen . Użyj ekranów-X opcji aby wykonać polecenie w sesji ekranu bez dołączania się do niego.

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

Jeśli chcesz zobaczyć dane wyjściowe programu, patrz hardcopy, logi logfilepoleceń.


Próbowałem już polecenia stuff, ale wysyła tylko polecenia z ekranu. Widzisz, że akceptuje tylko polecenia związane z ekranem, a nie program, którego używam.
Luis Alvarado,

@CYREX: stuffwysyła znaki dokładnie tak, jakby je wpisałeś. Co dokładnie próbowałeś, jaki był zamierzony efekt, a co zamiast tego?
Gilles „SO- przestań być zły”

Widzę, że masz część -p. Nie miałem tego Dodano tę część i teraz wysyła polecenie, ale jak mogę nacisnąć ENTER dla każdego polecenia?
Luis Alvarado,

Znaleziono to. Dodaj $ przed cudzysłowami i ucieka w nim jak C. W ten sposób -X rzeczy $ 'pokaż użytkownikom \ n'
Luis Alvarado

@CYREX: -pjest konieczny (lub przynajmniej dobry pomysł), jeśli istnieje więcej niż jedno okno. Aby „nacisnąć Enter”, po prostu dodaj nowy wiersz do argumentu (tj. Wewnątrz cudzysłowu), tak jak zrobiłem.
Gilles „SO- przestań być zły”
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.