2013-02-28 21 views
7

Voglio implementare l'attesa del comando "interact" usando java. In attesa, è possibile aprire una sessione ssh, autenticarsi e, quindi, utilizzare il comando "Interagisci" per restituire il controllo all'utente. È possibile con java? Ho provato con expectJ, expect4J e expectForJava ma c'è poca documentazione e quasi nessun esempio su come farlo. TIA.come implementare si aspetta il comando "interact" usando java

Update: per "interagire" di riferimento dei comandi, si prega di controllare questo fuori: http://wiki.tcl.tk/3914

"Interact è un comando che dà il controllo della corrente processo per l'utente, in modo che i tasti vengono inviati al aspettarsi attuale processo e lo stdout e lo stderr del processo corrente sono restituiti . "

+0

https://code.google.com/p/expect4j/wiki/Installation forse qui? –

+0

@SergeyBenner Non sono riuscito a trovare in expect4J, dal codice Java, qualcuno può chiamare il comando "interact". L'oggetto Expect ha solo metodi "expect" e "send". expectJ ne ha uno esplicitamente, ma non funziona (o non so come usarlo correttamente). –

+0

@DaveJarvis Vorrei dare un'occhiata. L'hai scritto da zero o hai usato qualche lib esistente? Ha la funzionalità "interagisci"? –

risposta

1

Nel caso in cui qualcuno sia interessato, ho aggiunto il supporto di base del loop interattivo a ExpectIt, la mia implementazione Expect per Java open source (mi dispiace per l'auto-promozione), dalla versione 0.8.

Ecco un example di interagire con il flusso di ingresso del sistema in Java 8:

 try (final Expect expect = new ExpectBuilder() 
       .withInputs(System.in) 
       .build()) { 
      expect.interact() 
        .when(contains("abc")).then(r -> System.out.println("A")) 
        .when(contains("xyz")).then(r -> System.err.println("B")) 
        .until(contains("exit")); 
      System.out.println("DONE!"); 
     } 
     System.in.close(); 
+0

Ciao Alexey - Apprezzo davvero l'aspettativa - attualmente cercando di interagire con l'interazione. Cosa c'è "r" in questo esempio? –

+0

@JonA 'r' è un parametro della funzione lambda. Prova a giocare con l'esempio completo: https://github.com/Alexey1Gavrilov/ExpectIt/blob/master/expect-java8/src/main/java/net/sf/expectit/java8/Java8Example.java –

+0

Sto usando Dipendenza da Maven, contiene non risolto per me .. perché idea? – Udhaya

Problemi correlati