2015-12-08 3 views
0

До сих пор мне удалось подключиться, запустить одну команду, а затем отключиться. Проблема, с которой я столкнулась, теперь выполняет вторую, третью и т. Д. Команду.выполнить несколько команд на удаленном сервере

public static void main(String args[]) { 
     try { 
      JSch js = new JSch(); 
      Session session = js.getSession("myuser", "myhost", 22); 
      session.setPassword("mypassword"); 
      Properties properties = new Properties() { 
       { 
        put("StrictHostKeyChecking", "no"); 
       } 
      }; 
      session.setConfig(properties); 
      session.connect(); 

      Channel channel = session.openChannel("exec"); 

      ChannelExec channelExec = (ChannelExec) channel; 
      channelExec.setCommand("ls"); 
      channelExec.setErrStream(System.err); 
      channelExec.connect(); 

      BufferedReader reader = new BufferedReader(new InputStreamReader(channelExec.getInputStream())); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       System.out.println(line); 
      } 

//   This part doesn't work. It causes the program to hang. 
//   BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(channelExec.getOutputStream())); 
//   writer.write("cd Downloads"); 
//   writer.write("ls"); 
//   reader = new BufferedReader(new InputStreamReader(channelExec.getInputStream())); 
//   while ((line = reader.readLine()) != null) { 
//    System.out.println(line); 
//   } 

      channelExec.disconnect(); 
      session.disconnect(); 

      System.out.println("Exit code: " + channelExec.getExitStatus()); 
     } catch (JSchException | IOException ex) { 
      Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

Я попытался с помощью OutputStream но это только вызвало программа ничего не делать, так что я подозреваю, что это не путь.

Что следует добавить для печати содержимого, следующего за командами cd Downloads и ls, например, после того, как был напечатан первый вывод ls?

+0

вы могли бы быть более конкретными. Где вы пытались подключиться, ssh или какой-нибудь другой? – Laksith

+0

Код, который вы разместили, выглядит так, как будто он выполняет только одну команду, поэтому я думаю, что он работает нормально? Не могли бы вы отредактировать сообщение, чтобы содержать код, который вы написали, который не работает? И объясните, как это происходит? – Kenster

+0

@ Laksith: Да, SSH – Hooli

ответ

1

Отделите свои команды на ";" например:

String command1="cd mydeploy/tools/Deploy/scripts/; ls -ltr;./conn_testing.ksh";