slowguy 2009-05-26 23:05
浏览 242
已采纳

关于在java应用中调用ssh的一个问题

由于我们的项目要用到ssh通信,所以需要在程序中调用ssh命令.
我采用的方式如下:
try {
String command = "ssh -2 -N -f -L 5000:122.204.142.54:8889 administrator@122.204.142.54 - i c:\axrsa" ;
// 注意:c:\axrsa为一个秘钥文件
Runtime.getRuntime().exec(command);
}
catch (IOException e)
{
e.printStackTrace();
}

可是出现的问题是,老是连接不上去,但如果我把command行命令在运行里面手动输入,却可以成功.但是却关闭不了dos窗口.须强行关闭.
这个问题困扰了我好几天了,请大家帮我看看啊.我初步怀疑是不是exec返回的子进程的输出缓冲区太小的原因.因为如果连接成功的话,ssh会返回很多信息.

[b]问题补充:[/b]
谢谢layer555 的热心回答.
但是我还是没有解决问题,我测试如下代码:

[img]/upload/attachment/108471/9a175e66-162b-395b-8288-56b7e627a5e0.jpg[/img]

然后一运行,发现程序结束不了.经调试发现,执行到如下语句就出问题了.
while ((line = error.readLine()) != null) {

                errorMessage.append(line); 
            } 

请问这是为什么? 谢谢大家

  • 写回答

4条回答 默认 最新

  • layer555 2009-05-27 11:29
    关注

    要不你再试试另一种写法吧,把两个流封装到线程中,单独启动,然后主线程使用process.waitFor()来等待程序结束。具体例子见 http://search.iteye.com/blog/253257

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退