M4207
epartement R & T - S4 - Module M4207 Rushed.Kanaw[email protected]
Projet : D´eveloppement d’un client graphique SNMP
8 f´evrier 2017
Ce projet est `a r´ealiser en binˆome. Chaque binˆome doit fournir `a la fin du projet : le code
commene, un rapport d´ecrivant l’´etude de conception et de r´ealisation du projet. La restitution
du projet se fait sous forme d ?une soutenance de 15 minutes le 28 f´evrier pour le groupe A et le
2 Mars pour le groupe B
1 Objectifs du projet
L’objectif de ce projet est de d´evelopper un simple client de supervision d’´equipements r´eseaux
en utilisant le protocole SNMP (Simple network Management Protocol). La biblioth`eque snmp4j
offre des classes java pour la programmation simple de clients/serveurs snmp. Dans ce projet nous
nous limitons au d´eveloppement d’un client snmp. Le cahier des charges `a respecter est le suivant :
1Le client offre un champ de saisi de l’adresse d’un agent SNMP `a interroger.
2Le client offer un champ de saisi d’un ou plusieurs variables d’observation (ex. OID).
3Il est possible d’effectuer des op´erations de lecture ou de modification des variables (sous
reserve d’utilisation des noms des communaut´es ad´equates).
4Pour des op´erations de lecture, il serait possible de sp´ecifier une p´eriodicit´e `a respecter (ex.
lecture d’une variable tous les x seconds).
5Un espace d’affichage des valeurs des variables observ´ees et/ou des messages d’erreurs est `a
pr´evoir.
6Le client doit permettre d’employer la version 1 du protocole SNMP.
2 Utilisation de SNMP4j
SNMP4J est une API 1java qui permet de d´evelopper des clients/serveurs SNMP. L’API est
disponible sur le site : http://www.snmp4j.org. Vous pouvez t´el´echarger le fichier jar de l’API sur
le site cit´e ou `a partir de http://lipn.fr/~kanawati/java/snmp4j-2.3.3.jar. La documentation
compl`ete est disponible sur http://www.snmp4j.org/doc/index.html.
Pour complier un programme Java qui utilise snmp4j n’oublier pas d’ajouter le fichier jar `a la
variable d’environment classpath ou de le sp´ecifier lors de la compilation comme suite :
javac -classpath . :./snmp4j-2.3.3.jar MyClasse.java
L’ex´ecution du programme se fait de la mˆeme mani`ere.
java -classpath . :./snmp4j-2.3.3.jar MyClasse
1. Application Programming Interface
1
M4207
epartement R & T - S4 - Module M4207 Rushed.Kanaw[email protected]
Un exemple type d’un client snmp qui effectue une op´eration GET est donn´e ci-apr`es.
import jav a . i o . IOException ;
import jav a . u t i l . ;
import org . snmp4j . ;
import org . snmp4j . event . ;
import org . snmp4j .mp. SnmpConstants ;
import org . snmp4j . smi . ;
import org . snmp4j . transport . DefaultUdpTransportMapping ;
import org . snmp4j . u t i l . ;
public c l a s s SimpleSnmpClient {
private S t r i n g a d dr e s s ; /a d r e s s e de l a ge n t SNMP /
private Snmp snmp ;
public Sim pleSnmp Clien t ( S t r i n g a d d re s s ) {
super ();
thi s . a dd r e s s = ad dr e s s ;
try {s t a r t ( ) ; }catch ( IOException e ) {throw new RuntimeException ( e ) ; }
}
public void s to p ( ) throws IOException {snmp . c l o s e ( ) ; }
private void start () throws IOException {
TransportMapping t r a n s p o r t = new DefaultUdpTransportMapping ( );
snmp = new Snmp( t r a n s p o r t ) ;
/La m´ethode l i s t e n permet au c l i e n t d e nvoy er e t r e c e v o i r l e s datagrammes s ur un s o c k e t UDP /
t r a n s p o r t . l i s t e n ( ) ;
}
public ResponseEvent g et (OID o i d s [ ] ) throws IOException {
ResponseEvent e ve nt = snmp . s end ( getPDU ( o i d s ) , ge tT ar ge t ( ) , nul l ) ;
i f ( event != null ){
return event ;
}
throw new RuntimeException ( GET timed out ” ) ;
}
public S t r i n g ge t As S t ri n g (OID o id ) throws IOException {
ResponseEvent event = g e t (new OID [ ] {o i d }) ;
return e ve nt . get Res pon se ( ) . g e t ( 0 ) . g e t V a r i a b l e ( ) . t o S t r i n g ( ) ;
}
2
M4207
epartement R & T - S4 - Module M4207 Rushed.Kanaw[email protected]
private PDU getPDU (OID o i d s [ ] ) {
/s p e c i f i c a t i o n de l a PDU `a envoyer /
PDU pdu = new PDU( ) ;
for (OID o id : o i d s ) {
pdu . add (new VariableBinding ( oid ));
}
pdu . setType (PDU.GET) ;
return pdu ;
}
private Tar get g etT ar ge t ( ) {
/s p e c i f i c a t i o n de l a d e s t i n a t i o n de l a r e q uˆe t e SNMP `a ´envoyer /
Address t ar g et A dd r es s = GenericA dd r e s s . p a r s e ( t h i s . add re s s ) ;
CommunityTarget t a r g e t = new CommunityTarget ( ) ;
t a r g e t . setCommunity (new O c te t St r in g ( p u b l i c ) ) ;
t a r g e t . s et Ad dr es s ( t ar ge t Ad dr es s ) ;
t a r g e t . s e t R e t r i e s ( 2 ) ;
t a r g e t . setTimeo ut ( 1 5 0 0 ) ;
t a r g e t . s e t V e r s i o n ( SnmpConstants . v e r s i o n 2 c ) ;
return target ;
}
public s t a t i c S t r in g e x t r a c t S i n g l e S t r i n g ( ResponseEvent event ) {
return e ve nt . get Res pon se ( ) . g et ( 0 ) . g e t V a r i a b l e ( ) . t o S t r i n g ( ) ;
}
public s t a t i c void main ( S t r i n g [ ] a r gs ) {
try{
SimpleSnmpClient c l i e n t = new SimpleSnmpClient ( ”udp : 1 2 7 . 0 . 0 . 1 / 1 6 1 ) ;
S t r i n g sy s De sc r = c l i e n t . g e tA sS t ri n g (new OID(.1.3.6.1.2.1.1.1.0));
System . out . p r i n t l n ( sy sDe sc r ) ;
}catch ( E xception e ){}
}
}
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !