2017-07-11 3 views
0

Je rencontre un problème avec psexec où ce n'est pas interactif. Elle retourne dès qu'il a exécuté la commande d'ouverture invite de commandeLigne de commande à distance interactive Java psexec

Voici ma classe de connexion:

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(); 
    } 
} 

Et puis, je vous appelle à l'aide du

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"); 

    } 
} 

suite à la sortie montre qu'il se connecte à l'hôte, mais il se déconnecte juste avant d'écrire la commande ping localhost

Voici la sortie

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 

suivi du ping stats

Comment puis-je conserver l'invite de commande la mise au point du flux de sortie quand j'envoie plusieurs commandes dans le tuyau, ils sont exécutés sur la machine distante pas ma machine locale?

Répondre

0

J'ai utilisé paexec au lieu de psexec et il a réussi à me donner une session interactive, j'espère que cela aidera quelqu'un dans le futur