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
très simple :
http://jakarta.apache.org/commons/net/
@+
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();
merci bien pour votre repose
je me demande ou puis je trouver le package "org.apache.commons.net.telnet" pour le telecharger ?
merci,
Dans le jar de commons net quie tu pourras téléchager au premier lien cité dans mon application (lien dowload sur la partie gauche de la page)...
Bonjour,
maintenant, pour telneter sur mon routeur, je dois saisir un mot de passe..
je sais pas ou est ce que je dois saisir le mot de passe dans mon application java?
merci
je m'explique encore,
si je fais telnet sur mon routeur, voila ce que je reçois comme resultat dans le reader
User Access Verification
Password:
donc je sais pas comment faire entrer mon mot de passe??
j'ai essayé de l'ecrire dans le writer, mais ça marche pas, j'arrive pas a telneter!!!
Bonjour,
Je cherche également à faire du telnet, et je me retrouve avec le même problème que mes prédécesseur, comment faire pour envoyer le login et le mot de passe.
car pour l'instant, mon ébauche de code simplissime en est là :
et la console me renvoi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 TelnetClient tc = new TelnetClient(); tc.connect("touque"); InputStream tcis = tc.getInputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(tcis)); String l = null; while ((l = in.readLine()) != null) { System.out.println(l); }
Mais comment faire à partir de ce moment là pour envoyer le login et le password ???Red Hat Linux release 7.2 (Enigma)
Kernel 2.4.24-smp on an i686
Car l'InputStream ne me renvoi pas la ligne "Login :" ou alors c'est que je ne l'ai pas vu O_O
Merci beaucoup
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager