Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从windows计算机运行shell命令的Java程序_Java_Shell_Runtime.exec - Fatal编程技术网

从windows计算机运行shell命令的Java程序

从windows计算机运行shell命令的Java程序,java,shell,runtime.exec,Java,Shell,Runtime.exec,我试图运行一个Java程序,在远程(Linux)机器上抛出命令。我可以让putty.exe运行,然后使用SSH密钥连接到机器。但我无法运行实际的命令,如“bash”、“ps-ef”或“ls-la”。当前正在使用Java runtime.exec,不确定使用Java.lang.ProcessBuilder是否有帮助?我做错了什么?如有任何帮助/指导,将不胜感激。。提前谢谢 package hello; import java.io.*; public class RuntimeExample {

我试图运行一个Java程序,在远程(Linux)机器上抛出命令。我可以让putty.exe运行,然后使用SSH密钥连接到机器。但我无法运行实际的命令,如“bash”、“ps-ef”或“ls-la”。当前正在使用Java runtime.exec,不确定使用
Java.lang.ProcessBuilder
是否有帮助?我做错了什么?如有任何帮助/指导,将不胜感激。。提前谢谢

package hello;

import java.io.*;
public class RuntimeExample {




     public static void main(String args[]) throws IOException {



    try{     


    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec(new String[]{"C:\\Users\\yky90455\\Desktop\\putty.exe","abc@login.testserver.helloworld.co.uk","bash", "ps -ef"});


    InputStream is = process.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line;

    System.out.printf("Output of running the command is:");

    while ((line = br.readLine()) != null) {
        System.out.println(line);

      }                                                             

    } catch (Exception e) {
        e.printStackTrace();
    }
}   

}

尝试使用Jsch将shell脚本从Java执行到某个远程Linux机器。我已经研究过这一点,这真的很有趣。虽然你可能会发现文档的不足之处,但是你可以很容易地克服它。

也要考虑PurjJ,它是TCL周围的一个包装器。自2010年年中以来,该项目似乎没有任何积极的开发,但我过去曾将其用于SSH


谢谢你的回答。我试着去图书馆。它适用于远程机器上的基本命令。我将不得不探索其他API,以防遇到SSH-2的任何限制

public class triggerPutty {
    public static void main(String[] a) {
        try {
            String command = "putty.exe user@abc.text.com -pw password -m C:\\containing_comman.txt";
            Runtime r = Runtime.getRuntime();
            Process p = null;
            p = r.exec(command);
            p.waitFor();
            p.destroy();
        } catch (Exception e) {
            e.printStackTrace();
        }    
    }
}
-m有助于从该文件运行命令。

您可以在该文件中保留N个命令标题##

为什么不使用SSH库,而不是putty?Java的整个要点是抽象的,远离操作系统。在调用本机命令之前,请始终搜索与平台无关的替代方法。在您的示例中,只需使用一个针对Java的SSH实现,例如。感谢您的快速响应。我将检查sshj和Jsch。回避下一个问题,可能是另一个线程。最好的SSH库是什么,它可以帮助您使用SSH密钥连接到远程linux机器并执行CommandsHanks以获得快速响应。我将查看sshj和Jsch。@joule_wonder:欢迎。但如果你选择Jsch:),请确保标记此答案。考虑改进你的答案。