我能够以两种方式运行远程脚本。 优先(间接) #ssh 二(SSH连接之后) #ssh # #exit(回主机终端)运行远程Linux脚本,就好像我在远程机器上一样
我认为有在型沟道转发一些差异。 换句话说,当我使用第一种方式运行远程脚本时,脚本的输出应该不是主机mashine而是远程第二种方式。
我有两台机器uturksat1和uturksat2 在uturksat2中,我有一个Linux脚本(/tmp/runScript.sh)和Java类Provider。 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机,我有类型以下命令
[email protected]:/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以返回
当我有键入以下命令:
[email protected]:/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.
[email protected]:/tmp#
Provider应用程序未运行,我可以通过telnet测试它到端口200 4供应商正在收听。
telnet uturksat2 2004
最后最后一个问题是,供应商使用log4j,以保持其internall日志,在远程Linux脚本执行的第一种方式,则不会创建log4j的LOF文件,但在第二个方法是创建。
请详细解释您尝试的命令,输出结果以及所需的输出。 'ssh remotehost prog arg'在'remotehost'上运行,''prog'在'arg'上运行,但在本地重定向远程stdout&stderr。阅读http://support.suso.com/supki/SSH_Tutorial_for_Linux或其他关于'ssh'的文档;你可能想要运行'ssh -v' ...来了解发生了什么 –