Bonjour,
J'aimerais faire une application telnet en Java (ouvrir une session telnet, lancer les commandes et recevoir les résultats dans un fichier texte).
Quelqu'un saurait-il me guider un peu ?
Merci d'avance pour votre aide.
Version imprimable
Bonjour,
J'aimerais faire une application telnet en Java (ouvrir une session telnet, lancer les commandes et recevoir les résultats dans un fichier texte).
Quelqu'un saurait-il me guider un peu ?
Merci d'avance pour votre aide.
C'est bien !
et maintenant tu nous montres le code que tu as fais et là où tu coinces ?
voila le code : (mais ça marche pas)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 package TelnetSample; import org.apache.commons.net.telnet.TelnetClient; import java.io.*; public final class TelnetSample { private TelnetClient telnet = new TelnetClient(); private InputStream in; private PrintStream out; private char prompt = '$'; public TelnetSample( String server, String user, String password ) { try { // Connect to the specified server telnet.connect( server, 23 ); // Get input and output stream references in = telnet.getInputStream(); out = new PrintStream( telnet.getOutputStream() ); // Log the user on readUntil( "login: "); write( user ); readUntil( "Password: " ); write( password ); // Advance to a prompt readUntil( prompt + " " ); } catch( Exception e ) { } } public void su( String password ) { try { write( "su" ); readUntil( "Password: " ); write( password ); prompt = '#'; readUntil( prompt + " " ); } catch( Exception e ) { } } public String readUntil( String pattern ) { try { char lastChar = pattern.charAt( pattern.length() - 1 ); StringBuilder sb = new StringBuilder(); boolean found = false; char ch = ( char )in.read(); while( true ) { System.out.print( ch ); sb.append( ch ); if( ch == lastChar ) { if( sb.toString().endsWith( pattern ) ) { return sb.toString(); } } ch = ( char )in.read(); } } catch( Exception e ) { } return null; } public void write( String value ) { try { out.println( value ); out.flush(); System.out.println( value ); } catch( Exception e ) { } } public String sendCommand( String command ) { try { write( command ); return readUntil( prompt + " " ); } catch( Exception e ) { } return null; } public void disconnect() { try { telnet.disconnect(); } catch( Exception e ) { } } public static void main( String[] args ) { try { TelnetSample telnet = new TelnetSample( "192.168.1.99", "username", "password" ); telnet.sendCommand( "cd /mydir/mysubdir" ); telnet.su( "root-password" ); telnet.sendCommand( "./restart.sh" ); telnet.disconnect(); } catch( Exception e ) { } } }
Salut,
Si tu traçais les exceptions dans les blocs catch, au lieu de les laisser vides, tu aurais plus d'informations sur ce qui ne va pas.
On ne fait jamais de catchs vides. Et n'oublie pas de fermer tes flux, lorsque tu t'en sers plus.