2011-06-18 15 views
7

Z "oczekiwać", można wykonać polecenia SSH i przeanalizować wyjście tych poleceń, aby zmienić przepływ programu. Chciałbym to zrobić z Javą. Oznacza to, że chcę, aby moja aplikacja Java uruchamiała sesję SSH, wykonuje polecenie na serwerze zdalnym i zależy od wyjścia tej komendy, wykonując następne polecenie, bez potrzeby uruchamiania nowej sesji SSH.SSH w aplikacji Java z "oczekiwaną" funkcjonalnością

Czy to możliwe w Javie?

Dzięki

Odpowiedz

3

Spróbuj ExpectJ.      

+0

To interesujący projekt, ale tak naprawdę nie to, czego szukam tutaj, ponieważ chciałbym zachować czystą Javę SSH - w ten sposób lepiej radzić sobie z wyjątkami. – jtnire

3

Tak, jest to możliwe. Jest kilka bibliotek, ale proponuję Ganymedowi SSH-2. Możesz go pobrać here, a jest także wiele przykładów używania funkcji ...

+0

To wygląda dobrze! Strona twierdzi jednak, że kod nie jest już utrzymywany. Czy masz doświadczenie z tym kodem? Czy jest stabilny czy nadal nieco błędny? Przykłady wydają się pasować do rachunku ładnie – jtnire

+0

Cóż, zgodnie z moim doświadczeniem wydaje się, że działa dobrze, ale nie jestem w 100% pewny ... –

6

Samo promowanie mojego projektu: po obejrzeniu innych bibliotek Expect opartych na języku Java postanowiłem napisać własną ... nadzieję okaże się to przydatne. Proszę otworzyć problemy w GitHub, jeśli znajdziesz jakiś problem.

https://github.com/ronniedong/Expect-for-Java

SSH, proponuję przy użyciu jsch, jako przykład w pliku readme.

+0

W rzeczywistości jest to elegancki i prosty, i jest tylko w połączeniu z 'java. interfejsy io.InputStream' i "javax.io.OutputStream' (które są zazwyczaj konstrukcjami dostępnymi z bibliotek SSH, takimi jak JSch lub Ganymed), ale umożliwiają inteligentne zakulisowe użycie konstrukcji NIO dla scenariuszy producent/konsument,' java .nio.channels.Pipe'. To lepsze niż Expect4J (wszystkie te zależności!) I lepsze niż Enchanter (nie zachowane, błędy synchronizacji, brak regex) lub ExpectJ (bez regex). Dziękuję Ci! –