0

わかった。私は困惑しています。私は 2 台のコンピューターを持っています。それらを machine1 と machine2 と呼びます。machine1 でコマンドを実行し、出力を machine2 にパイプします。この部分は簡単で、私はすでにこれを行うことができます. 私が困惑しているのは、マシン1のターミナルの出力を表示するマシン2のターミナルを開く方法です。

例: 作業中に時間がかかるスクリプトを実行します。このスクリプトには進行状況ダイアログが組み込まれており、machine1 のターミナルに進行状況が表示されます。このスクリプトが実行されている間、私は職場 (machine1 の場所) を離れ、ホーム オフィス (machine2) に戻ります。家に帰ったら、machine2 のターミナルでスクリプトの出力を確認したいと思います。

現在、次の回避策を使用しています。

#!/bin/bash

ssh user@machine2 'echo "" > file.txt; DISPLAY=:0.0 \
nohup conky -q -c /path/to/a/conkyrc \
> /dev/null 2> /dev/null < /dev/null &' \
#the conkyrc displays the last few lines of file.txt
echo "Hello world, or other commands" | ssh -q user@machine2 "sh -c 'cat >> file.txt'"

したがって、これはマシン 1 でコマンドを実行し、出力をマシン 2 の file.txt にパイプします。これは conky によって読み取られ、マシン 2 の画面に表示されます。家に帰ると、職場で実行を開始したスクリプトのステータスが conky パネルに表示されます。

これは機能的ですが、もっとうまくやりたいです。

質問 1: 上記のスクリプトを変更して、出力が machine2 の file.txt に出力され、さらに machine1 に出力されるようにするにはどうすればよいですか? 私は使ってみました

tee -a - ???? 

どこ ????ssh の場所です。残念ながら、ssh の場所が machine1 にマウントされていない限り、これは機能しません。

質問 2: machine1 から ssh 経由で machine2 のターミナルを開き、machine1 のターミナルと machine2 のターミナルの両方に出力を表示することで、同様の効果を生み出すことができますか? 例: 以下のスクリプトのバリエーションを使用して、machine1 のターミナルに進行状況バーを表示します。マシン 1 から ssh を介してマシン 2 でターミナルを開き、マシン 1 で実行されたコマンドから進行状況ダイアログを表示したいと考えています。

#!bin/bash
#A gauge Box example with dialog
(
c=10
while [ $c -ne 110 ]
do
    echo $c
    echo "###"
    echo "$c %"
    echo "###"
    ((c+=10))
    sleep 1
done
) |
dialog --title "A Test Gauge With dialog" --gauge "Please wait ...." 10 60 0

助けてくれる人に感謝します。私は優れたプログラマーではなく、ただの単純な数学者です。

4

1 に答える 1

5

使用する必要がありますscreen

多くの機能を備えた素晴らしいttyエミュレーターです。

を見てみましょうman screen

(リモートデスクトップVNCに少し似ていますが、キャラクターモードでは非常に高速で、多くの優れた機能を備えていると私は主張します)

マシン 1 で:

screen -D -R

これにより、新しい が開きbashます。

machine2 で:

ssh -t user@machine1 screen -x

また、 machine1のセッションの疑似ttyuserdが共有されます。

いつでも、ウィンドウを閉じるか、この 2 つのターミナルのいずれかから切断することができControl + Aますd

まったく、別の場所から入力して他のコンソールに接続したり、代わりにscreen -x入力して他のコンソールを強制的に切断したりすることができます。screen -D -Rscreen -x

screen(スクリーンセッション内から実行しないように注意してください)

于 2012-12-23T20:19:45.700 に答える