Salut,
dans mon application java, j'ai besoin de faire un telnet sur un routeur cisco à partir de l'application, sachant que je travaille avec netbeans.
est ce que jaurai besoin d'un package telnet? ou puis je le trouver?
Salut,
dans mon application java, j'ai besoin de faire un telnet sur un routeur cisco à partir de l'application, sachant que je travaille avec netbeans.
est ce que jaurai besoin d'un package telnet? ou puis je le trouver?
a priori pas besoin.
Un bon vieu Runtime.exec("prog");
tu recupere le stream d'entée et tu lui balance les commande a la chaine
merci infiniment pour votre reponse, mais je sais pas encore comment resoudre mon probleme, j'ai pas bien compris votre reponse, j'ai besoin de plus d'explication SVP
![]()
En gros, tres gros meme : P
voila en gros
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 //Ca commence comme ca Runtime rt = Runtime.getRuntime(); //La dessus tu demande l'execution de telnet //Bon faudra ptet lui filer un login mot de passe... a voir //Tu recupere un handle sur le Process en cours Process appli = rt.exec( "c:\WinNT\system32\telnet" ); //Sur ce process tu recupere un flux d'entrée par lequel tu va balancer les commandes InputStream fluxentree = appli.getInputStream(); //Pour chaque commande tu envoie dans le flux for( String commande : List<String> lstCommandeAExecuter ){ fluxEntre.write( commande ); }
bonjour,
1) merci beacoup pour votre aide, le probleme c que un InputStream n'admet pas la methode write()!!!
2) j'ai besoin de faire le telnet sur un routeur dont l'acces demande un mot de passe, je comprends pas ou je dois spécifier l'adresse ip du routeur et le mot de passe!!!
merci encore une fois
Dans ton cas mieux vaut passer par ce qui est proposé par yopiyop:
http://jakarta.apache.org/commons/net/
et d'utiliser la classe TelnetClient
Grosso modo tu procède de la façon suivante
et ensuite pour les opérations d'écriture tu fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 InetAdress address = InetAdress.getByName("<a href="http://www.google.com" target="_blank">http://www.google.com</a>"); int port = 23; TelnetClient tc= new TelnetClient(); tc.connect(address,port);
de même pour la lecture, enfin il est préférable qu'une opération régulière de lecture soit effectuée au moyen d'un thread afin de ne pas bloquer le thread principal (à moins qu'on ne le veuille bien sûr)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 PrintWriter writer = new PrintWriter(tc.getOutputStream()); writer.println("commande telnet");
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 char[] buff = new char[1024]; InputStreamReader reader = new InputStreamReader(tc.getOutputStream()); StringBuffer sb = new StringBuffer(); int nb = String writer.read("commande telnet"); while(nb>=0) { sb.append(buff); nb = String writer.read("commande telnet"); } String commande = sb.toString();
très simple :
http://jakarta.apache.org/commons/net/
@+
Voici le code complet pour ceux qui serait à la recherche d'une réponse :
Vous trouverez d'autre information par rapport à la librairie common-net ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
110
111
112
113
114
115
116
117
118 package com.informit.commons; import org.apache.commons.net.telnet.*; import java.io.*; public 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 ) { e.printStackTrace(); } } public void su( String password ) { try { write( "su" ); readUntil( "Password: " ); write( password ); prompt = '#'; readUntil( prompt + " " ); } catch( Exception e ) { e.printStackTrace(); } } public String readUntil( String pattern ) { try { char lastChar = pattern.charAt( pattern.length() - 1 ); StringBuffer sb = new StringBuffer(); 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 ) { e.printStackTrace(); } return null; } public void write( String value ) { try { out.println( value ); out.flush(); System.out.println( value ); } catch( Exception e ) { e.printStackTrace(); } } public String sendCommand( String command ) { try { write( command ); return readUntil( prompt + " " ); } catch( Exception e ) { e.printStackTrace(); } return null; } public void disconnect() { try { telnet.disconnect(); } catch( Exception e ) { e.printStackTrace(); } } 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 ) { e.printStackTrace(); } } }
http://www.informit.com/guides/conte...java&seqNum=40
Bonne continuation à tout le monde !!
moi ça marche du tonnerre![]()
slut a tous je suis nouvelle dans la prgrammation et mon projet est le mm cad configurer telnet en java ,je voudrais utiliser le code proposé plus haut mais je n'arrive pas à importer le package commons.net.apidocs.org.apache.commons.net.telnet.*
merci d'avance
![]()
Partager