PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Telnet via Java



mrasp
12.01.2005, 13:42:03
Hi.

Auch wenn das vielleicht eher in ein Programmierforum gehört: Ich würde mich gerne von einem Java-Programm aus per Telnet auf der Box einloggen. Leider kommt bei mir noch nicht mal die "Login:" Ausgabe...

Martin


String cmd = program + " " + hostname + " " + Integer.toString(port);
System.out.println("Kommando: " + cmd);

Process p = Runtime.getRuntime().exec( cmd );

BufferedReader in = new BufferedReader(
new InputStreamReader( p.getInputStream() )
);
PrintStream os = new PrintStream( p.getOutputStream() );

for ( String s; (s = in.readLine()) != null; )
{
System.out.println( s );
}

gummibaum
12.01.2005, 14:19:53
Moin,

das liegt (ziemlich sicher) daran, dass telnet zur Ein-/Ausgabe nicht stdin/stdout benutzt, sondern direkt die Tastatur liest / auf den Bildschirm schreibt.

Da hilft wohl nur, 'n Telnet-Client in Java zu implementieren bzw. im Web zu suchen.


bis die Tage...
. Mathias

mrasp
14.01.2005, 23:54:18
Ich habe von jakarta.apache.org das commons-net Package heruntergeladen, kann damit per Telnet auf die Box, Befehle absetzen und das Ergebnis auswerten.

Allerdings glaube ich, dass ich irgendwie noch ein Java-Verständnisproblem habe. Die Java-Klassen werden wie folgt (erfolgreich) compiliert:



$ javac -classpath lib/commons-net-1.3.0.jar -O m740/*.java


Beim Starten der Java-Anwendung ohne Classpath kommt wie erwartet der Fehler NoClassDefFoundError:



$ java m740/TelnetTest
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/net/telnet/TelnetClient
at m740.TelnetConnection.<init>(TelnetConnection.java:15)
at m740.TelnetTest.main(TelnetTest.java:42)


Wenn ich nun der JRE den Classpath so übergebe wie beim Compiler, dann findet er plötzlich meine eigene Klasse nicht mehr:



$ java -classpath lib/commons-net-1.3.0.jar m740/TelnetTest
Exception in thread "main" java.lang.NoClassDefFoundError: m740/TelnetTest


Wenn ich die Klassen als jar-Paket zusammenfasse und aufrufe, dann wird die TelnetClient-Klasse ebenfalls nicht gefunden:



$ jar -cfmv m740.jar MANIFEST.MF m740/*.class
$ java -classpath lib/commons-net-1.3.0.jar -jar m740.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/net/telnet/TelnetClient
at m740.TelnetConnection.<init>(TelnetConnection.java:15)
at m740.TelnetTest.main(TelnetTest.java:42)


Das Programm funktioniert nur, wenn ich das commons-net Package mit in meine m740.jar Datei packe oder das commons-net Package im obersten Verzeichnis entpacke ...

Ist doch irgendwie seltsam, oder?

Martin

P.S. Ein reines Programmierforum für spezielle M740-Software wäre vielleicht nicht schlecht...

gummibaum
15.01.2005, 10:24:13
Moin,


java -classpath lib/commons-net-1.3.0.jar m740/TelnetTest(Deine Klasse heißt schließlich m740.TelnetTest)


bis die Tage...
. Mathias

mrasp
15.01.2005, 21:50:01
@gummibaum:
War ein Typo hier im Beitrag... bei mir aufm System hab ich das schon richtig angegeben. Der Fehler kommt aber dennoch:



$ java -classpath lib/commons-net-1.3.0.jar m740/TelnetTest
Exception in thread "main" java.lang.NoClassDefFoundError: m740/TelnetTest

$ ls -la lib/
insgesamt 165
drwxr-xr-x 2 martin martin 88 2005-01-12 18:54 .
drwxr-xr-x 5 martin martin 304 2005-01-15 22:45 ..
-rwx------ 1 martin martin 166679 2004-12-14 19:40 commons-net-1.3.0.jar

$ ls -al m740/
insgesamt 21
drwxr-xr-x 2 martin martin 192 2005-01-15 22:46 .
drwxr-xr-x 5 martin martin 304 2005-01-15 22:45 ..
-rw-r--r-- 1 martin martin 2334 2005-01-15 00:42 TelnetConnection.class
-rw-r--r-- 1 martin martin 4736 2005-01-14 20:25 TelnetConnection.java
-rw-r--r-- 1 martin martin 1458 2005-01-15 00:42 TelnetTest.class
-rw-r--r-- 1 martin martin 1815 2005-01-15 00:57 TelnetTest.java

DonS
15.01.2005, 23:19:17
$ java -classpath lib/commons-net-1.3.0.jar m740/TelnetTest
Exception in thread "main" java.lang.NoClassDefFoundError: m740/TelnetTest



der findet seinen eigenen TelnetTest nicht, einfach zu classpath noch das Verzeichniss des TelnetTest angeben:

$ java -classpath .;lib/commons-net-1.3.0.jar m740/TelnetTest

:eek: :eek: :eek: :eek: