2 つの方法でリモート スクリプトを実行できます。1回目(間接) #ssh 2回目(ssh接続後) #ssh # #exit (ホスト端末に戻る)
チャネル転送の種類に多少の違いがあると思います。つまり、リモートスクリプトを実行するために最初の方法を使用した場合、スクリプトの出力は、ホストマシンではなく、2番目の方法のようなリモートのものである必要があります。
uturksat1 と uturksat2 の 2 台のマシンがあります。uturksat2 には、Linux スクリプト (/tmp/runScript.sh) と Java クラス プロバイダーがあります。Linux スクリプトは、ソケットを開いてリッスンする Provider Java アプリケーションを実行します。
#!/bin/bash
echo "Provider"
$JAVA_HOME/bin/java -cp /tmp Provider&
$JAVA_HOME/bin/java -version
rm /tmp/pid
echo "$!"> /tmp/pid
echo "Provider-finish"
exit 0
uturksat1 マシンでは、次のコマンドを入力します
root@UTURKSAT1:/tmp# ssh uturksat2 /tmp/runScript.sh
Provider
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)
Provider-finish
Waiting for connection
コマンド プロンプトが自動的に返されないため、戻るには ctrl+c を押す必要があります
次のコマンドを入力したら:
root@UTURKSAT1:/tmp# ssh -t uturksat2 /tmp/runScript.sh
Provider
Waiting for connection
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode, sharing)
Provider-finish
Connection to uturksat2 closed.
root@UTURKSAT1:/tmp#
プロバイダー アプリが実行されていません。プロバイダーがリッスンしているポート 2004 への telnet 経由でテストできます。
telnet uturksat2 2004
最後の問題は、プロバイダーが log4j を使用して内部ログを保持することです。リモート Linux スクリプト実行の最初の方法では、log4j lof ファイルは作成されませんが、2 番目の方法では作成されます。