首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Nginx测试中怎么实现远程执行程序

2012-06-26 
Nginx测试中如何实现远程执行程序需求:在进行Nginx测试的过程中,经常需要对远程服务器执行一些shell脚本、

Nginx测试中如何实现远程执行程序

需求:

在进行Nginx测试的过程中,经常需要对远程服务器执行一些shell脚本、应用程序或系统命令。一般简单的方法是将测试代码放到所需的远程服务器上来运行,或者使用staf框架来协助远程执行。

但我个人认为,staf框架比较适合用于执行sudo权限的命令,而且他对服务器环境有一些额外的要求,比如远程服务器和本机均必须安装staf,而且执行输出结果也不是很清晰。

那有没有轻量级的远程执行方法,并且能将执行结果完整的输出呢?在这里要感谢我以前的同事:一环同学,是他提供了这个宝贵的经验,采用JAVA源码提供的工具: ch.ethz.ssh2

?

解决方案:

首先介绍ch.ethz.ssh2的一些方法:

1.?ch.ethz.ssh2.Connection:

? ? ? ? ? Connection对象,用于与一台SSH-2 服务器建立加密的TCP/IP连接;

2. authenticateWithPassword方法:?

? ? ? ? ? 在连接建立成功之后,向远程服务器发起认证。该方法通过用户名+密码的方式来进行验证。

? ? ? ? ? 如果验证阶段完成,将会返回true。如果远程服务器拒绝请求或者需要进一步的验证操作,则返回false。

3. openSession方法:

? 在连接建立完成且验证通过之后,打开一个新的会话用于后续的程序执行操作。tips:一个连接可以打开多个会话。

4.?ch.ethz.ssh2.Session:

? 会话对象,是用于执行远程程序的。这个程序包含了shell脚本、应用程序、系统命令。tips:多个会话可以同步执行。

5. execCommand方法:

? 用于在远程服务器上执行命令。

6. startShell方法:

? 用于在远程服务器上启动shell脚本。

还有其他对象和方法在这里先不进行介绍,大家有兴趣可以参见开源文档或代码——http://www.java2s.com/Open-Source/Java-Document/Net/Ganymed-SSH-2/ch/ethz/ssh2

??

?

其次介绍使用这些方法的代码实现:

?

?

最后是代码执行及结果展示:

所执行的代码:

?


  -S

  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.

热点排行