Mengirim masukan ke sesi layar dari luar

18

Skenario saya adalah ini:

Saya memiliki sesi layar berjalan di lokasi yang jauh. Di dalam layar ini adalah program berbasis hiburan. Ketika dijalankan tanpa layar, program ini dimulai di terminal dan menerima perintah pada input standarnya.

Yang saya inginkan adalah cara mengirim perintah ke layar dari jarak jauh sehingga perintah ini diterima oleh program konsol. Mungkin seperti ini:

PC Saya -> SSH Kirim Pesan Otomatis -> Sesi Layar -> Program (Perintah jalankan diterima)

Jadi dari PC jarak jauh saya dapat mengirim melalui perintah SSH ke layar yang mengirimkannya ke program. Program menerima mereka dan mengeksekusi mereka.

Luis Alvarado
sumber

Jawaban:

17

Jika saya mengerti dengan benar, Anda ingin mengirim input ke program yang berjalan di dalam sesi layar. Anda dapat melakukan ini dengan stuffperintah layar . Gunakan -Xopsi layar untuk menjalankan perintah dalam sesi layar tanpa melampirkannya.

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

Jika Anda ingin melihat output program, lihat perintah hardcopy, logdan logfile.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Sudah mencoba perintah barang tetapi hanya mengirimkan perintah yang dari layar. Anda melihatnya hanya menerima perintah yang terkait layar, bukan program yang saya gunakan terkait.
Luis Alvarado
@CYREX: stuffmengirim karakter, persis seperti jika Anda mengetiknya. Apa sebenarnya yang Anda coba, apa efek yang dimaksudkan, dan apa yang terjadi?
Gilles 'SANGAT berhenti menjadi jahat'
Saya melihat Anda memiliki bagian -p. Saya tidak memilikinya. Menambahkan bagian itu dan mengirimkan perintah sekarang tetapi bagaimana saya bisa menekan ENTER untuk setiap perintah?
Luis Alvarado
Menemukannya. Tambahkan $ sebelum tanda kutip dan biarkan C like lolos di dalamnya. Seperti ini -X barang $ 'tampilkan pengguna \ n'
Luis Alvarado
@ CYREX: -pdiperlukan (atau setidaknya ide yang bagus) jika ada lebih dari satu jendela. Untuk "tekan Enter", cukup sertakan baris baru dalam argumen (yaitu di dalam tanda kutip), seperti yang telah saya lakukan.
Gilles 'SO- berhenti bersikap jahat'