【问题标题】:Java psexec interactive remote command lineJava psexec 交互式远程命令行
【发布时间】:2017-12-15 18:41:17
【问题描述】:

我在使用 psexec 时遇到问题,它不是交互式的。它在运行命令打开命令提示符后立即返回

这是我的连接类:

package testProject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;


public class ConTest {

    private ProcessBuilder process;
    private Process connection;
    private String main_connection;;

    public ConTest(String host, String user, String password) {
        process = new ProcessBuilder("cmd.exe");
        process.redirectErrorStream(true);
        main_connection="<path to psexec>\psexec.exe \\\\" + host + 
                " -accepteula -nobanner -u " + user + " -p " + password +" cmd";
    }

    public void runCommand(String command) throws Exception{

        /* Variable Declaration */
        String          readline;
        PrintStream     output;
        BufferedReader  input;

        /* Variable Initialization */
        connection = process.start();
        output = new PrintStream(connection.getOutputStream());
        input = new BufferedReader(new InputStreamReader(connection.getInputStream()));

        /* Running the commands on the Host */

        output.println(main_connection);
        output.println(command);
        output.println("exit");
        output.close();

        /*print the output from the command*/
        while ((readline = input.readLine()) != null) {
            System.out.println(readline);
        }

        input.close();
        connection.waitFor();
    }
}

然后我使用以下方式调用它

package testProject;

public class mainClass {

    public mainClass() {
    }

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

        ConTest con = new ConTest(<IP>, <Admin>, <Password>);
        con.runCommand("ping localhost");

    }
}

输出显示它连接到主机,但在写入ping localhost 命令之前它只是断开连接

这是输出

C:><path to psexec>\psexec.exe \\<IP> -accepteula -nobanner -u <Admin> -p <Password> cmd
Microsoft Windows [Version 6.1.7601]Connecting to <IP>...


Starting PSEXESVC service on <IP>...


Connecting with PsExec service on <IP>...


Starting cmd on <IP>...



cmd exited on <IP> with error code 0.

C:\>ping localhost

随后是 ping 统计数据

我怎样才能让命令提示符成为输出流的焦点,这样当我通过管道发送更多命令时,它们会在远程机器而不是我的本地机器上执行?

【问题讨论】:

    标签: java windows remote-access psexec


    【解决方案1】:

    我使用了 paexec 而不是 psexec,它成功地为我提供了一个交互式会话,希望这对将来的某人有所帮助

    【讨论】:

      猜你喜欢
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多