Java psexec 交互式远程命令行
Java psexec interactive remote command line
我在使用 psexec 时遇到问题,它不是交互式的。它 returns 一旦它有 运行 打开命令提示符的命令
这是我的连接 class:
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 统计数据
如何让命令提示符成为输出流的焦点,以便当我通过管道发送更多命令时,它们会在远程机器上执行,而不是在我的本地机器上执行?
我使用 paexec 而不是 psexec,它成功地为我提供了一个交互式会话,希望这对以后的人有所帮助
我在使用 psexec 时遇到问题,它不是交互式的。它 returns 一旦它有 运行 打开命令提示符的命令
这是我的连接 class:
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 统计数据
如何让命令提示符成为输出流的焦点,以便当我通过管道发送更多命令时,它们会在远程机器上执行,而不是在我的本地机器上执行?
我使用 paexec 而不是 psexec,它成功地为我提供了一个交互式会话,希望这对以后的人有所帮助