2013-02-28 5 views
7

Ich möchte den Expect-Befehl" interagieren "mit Java implementieren. In expect ist es möglich, eine SSH-Sitzung zu öffnen, sich zu authentifizieren und dann den Befehl "interact" zu verwenden, um dem Benutzer die Kontrolle zurückzugeben. Ist das mit Java möglich? Ich habe mit expectJ, expect4J und expectForJava versucht, aber es gibt wenig Dokumentation und fast keine Beispiele dafür. TIA.Wie zu implementieren "Expect" interaktiv "-Befehl mit Java

Update: für Befehlsreferenz "interagieren", bitte check this out: http://wiki.tcl.tk/3914

„Interact ist ein Befehl erwarten, die dem Benutzer die Kontrolle über den aktuellen Prozess gibt, so dass Tastenanschläge an die gesendet werden Aktuelle Prozess, und die Stdout und Stderr des aktuellen Prozesses sind zurückgegeben. "

+0

https://code.google.com/p/expect4j/wiki/Installation vielleicht hier? –

+0

@SergeyBenner Ich konnte nicht in expect4J finden, aus dem Java-Code kann jemand den Befehl "interaktiv" aufrufen. Das Expect-Objekt hat nur "Expect" - und "Send" -Methoden. expectJ hat einen explizit, aber es funktioniert nicht (oder ich weiß nicht, wie ich es richtig benutzen soll). –

+0

@DaveJarvis Ich würde gerne einen Blick darauf werfen. Hast du es von Grund auf geschrieben oder hast du irgendeine existierende Bibliothek benutzt? Hat es die "Interaktion" -Funktionalität? –

Antwort

1

Falls jemand interessiert ist, habe ich ExpectIt, meine eigene Open-Source-Expect für Java-Implementierung (sorry für Eigenwerbung), seit der Version 0.8 grundlegende interaktive Loop-Unterstützung hinzugefügt.

Hier ist eine example von in Java 8 mit dem Systemeingangsstrom in Wechselwirkung:

 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

Hallo Alexey - Wirklich schätzen Erwartung - derzeit versuchen, interagieren zu arbeiten. Was ist "r" in diesem Beispiel? –

+0

@ JonA 'r' ist ein Lambda-Funktionsparameter. Versuchen Sie, mit dem vollständigen Beispiel zu spielen: https://github.com/Alexey1Gavrilov/ExpectIt/blob/master/expect-java8/src/main/java/net/sf/expectit/java8/Java8Example.java –

+0

Ich benutze maven Abhängigkeit, enthält nicht für mich gelöst .. warum Idee? – Udhaya

Verwandte Themen