外部からスクリーンセッションに入力を送信する


18

私のシナリオはこれです:

リモートロケーションで実行されているスクリーンセッションがあります。この画面内には、コンソールベースのプログラムがあります。画面なしで実行すると、このプログラムは端末で起動し、標準入力でコマンドを受け入れます。

私が欲しいのは、リモートからコマンドを画面に送信して、このコマンドがコンソールプログラムで受信されるようにする方法です。たぶんこのように:

マイPC-> SSH Send Msg Auto-> Screen Session-> Program(Run command received)

したがって、リモートPCからSSHコマンドを介して画面に送信し、画面にプログラムを送信できます。プログラムはそれらを受け入れて実行します。

回答:


17

私が正しく理解していれば、画面セッション内で実行されているプログラムに入力を送信することになります。これは、画面のstuffコマンドで実行できます。スクリーンの-Xオプションを使用して、スクリーンセッションにアタッチせずにコマンドを実行します。

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

あなたがプログラムの出力を確認したい場合は、参照hardcopylogおよびlogfileコマンドを。


すでにstuffコマンドを試しましたが、画面からのコマンドのみを送信します。画面に関連するコマンドのみを受け入れ、プログラムは関連を使用していません。
ルイスアルバラード

@CYREX:stuff入力したとおりに文字を送信します。正確に何を試みましたか、意図した効果は何でしたか、代わりに何が起きましたか?
ジル 'SO-悪である停止

-pの部分があります。ありませんでした。その部分を追加し、現在コマンドを送信していますが、コマンドごとにEnterキーを押す方法はありますか?
ルイスアルバラード

それを見つけた。引用符の前に$を追加し、Cのようにエスケープします。このように-Xスタッフ$ 'show users \ n'
ルイスアルバラード

@CYREX:-p複数のウィンドウがある場合に必要です(または少なくとも良い考えです)。「Enterキーを押す」には、引数に改行(引用符内)を含めるだけです。
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.