2013-03-06 103 views
1

我有代码让我通过ssh连接,运行一个命令并得到回应。它工作正常,但仅适用于非交互式命令(如:ls,df,它们在运行后立即返回结果)。问题是当我试图运行一些交互式命令,如toppasswd代码正在等待响应(当然没有)。如何应对交互式Linux命令?

如何应对交互式命令?我真的不关心输出,我只是想运行它。

public String runCommand(String command) throws Exception { 

    // SSH Channel 
    ChannelExec channelssh = (ChannelExec) session.openChannel("exec");  

    // Execute command 
    channelssh.setCommand(command); 
    channelssh.connect();  

    InputStream inputStream = channelssh.getInputStream(); 
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
    StringBuilder stringBuilder = new StringBuilder(); 
    String line; 

    while ((line = bufferedReader.readLine()) != null) 
    { 
     stringBuilder.append(line); 
     stringBuilder.append('\n'); 
    } 

    channelssh.disconnect(); 
    return stringBuilder.toString(); 
} 

回答