SSH到多个服务器

时间:2011-07-11 22:05:47

标签: java shell ssh

您好我正在尝试ssh到4台服务器,但我只是进入第一台而不是其他服务器。如果有人能告诉我这个代码中哪里出错了。

try  {    
    File f = new File("/usr/site/html/Output.txt"); 

    BufferedWriter output = new BufferedWriter(new FileWriter(f));

    out.println(f.getPath());

    String Servers[] = {"root@a1.xyz.com","root@a2.xyz.com","root@a3.xyz.com","root@a4.xyz.com"};

    for(int i =0;i<Servers.length;i++){
        Process p = Runtime.getRuntime().exec("ssh "+Servers[i]);
        output.write("\nI'm In"+Servers[i]);
        String s = "exit";
        byte[] byteS = s.getBytes();
        p.getOutputStream().write(byteS);
        output.write("\nI'm logged out ");
        output.close();
    }

到目前为止,我只能登录第一个。有什么建议??

由于

2 个答案:

答案 0 :(得分:2)

这可能无法解决您的问题,但从首次查看代码开始,您将关闭循环中的输出。写入已关闭的输出的任何atttemp都应该给出运行时错误。将output.close()移出for循环。

答案 1 :(得分:0)

检查进程的退出值并确保其为0.此外,使用Process对象的waitFor方法可能是个好主意,因为它会使线程等待直到当前进程终止。