bonjour,est ce que vous pouvez m'aider,j'ai besoin d'un bout de programme qui me permet de connaitre la version d'un OS sur les machines distantes sur un réseau local.
merci d'avance
bonjour,est ce que vous pouvez m'aider,j'ai besoin d'un bout de programme qui me permet de connaitre la version d'un OS sur les machines distantes sur un réseau local.
merci d'avance
pour le nom de l'OS
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.getProperty("os.name")
pour la version
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.getProperty("os.version")
Connaitre l'os d'une machine distante n'est pas chose aisée. Il n'y a pas de protocole officiellement supporté pour faire ça. Il existe des outils comme nmap qui peuvent, à partir de certaines caractéristiques des packets IP reçu et d'une base de signature arriver à déterminer ce genre d'information.
Mais faire ça directement en java, ca risque d'être assez galère, c'est déjà pas facile avec les langages de bas niveau
le mieux serait pour ton programme d'invoquer nmap et de lui laisser faire son travail
j'ai arrivé a développer ce bout de programme et lorsque je l'intègre dans le programme qui affiche les ip des machines sur les réseau j'obtiens les mêmes informations pour tout les machines :
Name of the OS: Windows Vista
Version of the OS: 6.0
Architecture of THe OS: x86
on dirait que c'est statique.
voici le code:
merci pour vos réponses.
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 package opersys; public class OpertingsystemInfo { public static void main(String[] args) { String nameOS = "os.name"; String versionOS = "os.version"; String architectureOS = "os.arch"; System.out.println("\n The information about OS"); System.out.println("\nName of the OS: " + System.getProperty(nameOS)); System.out.println("Version of the OS: " + System.getProperty(versionOS)); System.out.println("Architecture of THe OS: " + System.getProperty(architectureOS)); } }
ca donne les informations sur la machine où le bout de code en question s'exécute. Tu n'aura pas des informatiosn distantes avec ça :s
comment faire alors est ce que je peut faire une astuce(un boucle) ou quelque chose qui va me permettre ça ou c'est pas possible.si vous avez des suggestions n'hésitez pas je vous en pris.
c'est compliqué et bien au delà de ce qu'on aurait le temps de vous expliquer sur le forum. Regardez la doc de nmap, ses sources, et vous comprendrez la difficulté.
En effet, je devais vraiment pas être bien réveillé ce matin, la méthode que j'ai donné donne les informations de la machine locale, pas distante.j'ai arrivé a développer ce bout de programme et lorsque je l'intègre dans le programme qui affiche les ip des machines sur les réseau j'obtiens les mêmes informations pour tout les machines
Comme dit tchize, utiliser un outil comme nmap semble être la seule solution envisageable étant donné que l'API Java ne permet pas de faire ça.
utiliser un outil comme nmap????mais je suis entrain de faire un projet fin d'étude et je doit développer le code...
pour me connecter sur les machine du réseau en utilisant leurs adresses ip déjà acquis et exécuté le code locale que j'ai développé sur chacune des machine.est ce que je peut utiliser par exemple une Socket ou n'importe quel autre solution?
les machines distantes ne vont pas te laisser exécuter à distance du code comme ça Sinon ce serait un fameux trou de sécurité.
Vous pouvez developper votre propre code, mais je vois pas où est le problème dans un projet de fin d'étude d'éviter de réinventer la roue. De toutes facons, les techniques utilisées par nmap sont
-> Envois de paquets IP spécialement formé: impossible à faire en java de base
-> Analyse des entêtes ip généré : information non disponible en java de base
-> Scan des ports, utilisation de paquets "christmas tree" et autre: impossible à construire en java de base
Concrètement, c'est quoi le but de votre application?
création d'un script en java qui sert a :
Scanner le réseau pour afficher:
* les différents périphériques (imprimantes, pc, Switch)
*les caractéristiques de chaque pc (taille disque dur, type de système d'exploitation, mémoire libre, model, port de connexion)
*les analyse de sécurité (ports ouverts, les softwares sans licence)
j'ai réussi a récupéré les adresses ip des machines connectées au réseau ainsi que les noms mais tout les autres caractéristiques sont locales donc le problème c que je doit exécute leur code sur les machine du réseau pour avoir leur caractéristique.
ben oui mais pour tout ça, tu n'aura pas le choix, il faudra installer sur les postes du réseau une application qui collecte ces données et les envoie vers ton serveur. Il faudra donc accéder à cette machine et faire l'installation.
A noter qu'une grande partie de ces informations, meme en local, tu va souffrir pour les obtenir en java
Ton professeur n'est visiblement pas au courant des limitation de java et de ce que l'on peut faire par réseau en général, une bonne partie des informations qu'il te demande, ne peux simplement pas être obtenue sans installer un logiciel coté client.
Il faudrait que tu discutes de ça avec lui, car il n'y a pas de solution uniquement coté serveur.
regarde avec ton encadreur à recentrer le projet, ca part en c**** commec'est là. Je ne sais pas quel est la taille du réseau concerné, mais il serit peut etre plus judicieux de consacrer le temps du projet à la préparation, la configuration et la mise en place d'un outil comme OCS inventory http://www.ocsinventory-ng.org/index.php?page=French
mon encadreur(société)n'a jamais développer en java et veut que je développe avec vb mais si je développe en vb pour le jury le jour de la soutenance il vont baissé la note car tout est fait avec vb (cette application existe déja et compléte en vb)donc c mieux de la faire en java ,qui est une langage plus "nouveau" méme pour le jury .
bon l'encadreur du société utilise déja ocs Inventory et GLPI.
je veux faire quelque chose comme ocs inventory mais en java
si je fait une socket qui va s'exécuté sur les machines distant et récupéré le résultat est ce possible?je pense que je n'ai pas d'autres choix.
possible mais encore une fois compliqué. Des tas d'informations que tu veux utiliser ne sont pas accessible à le JVM, il va falloir jouer avec du JNA ou des choses similaire pour y arriver.
Tu serais pas plus avancé en VB, VB ne tourne que sous windows, hors ocs inventory est multi plateforme.
La question que je me pose moi, c'est pourquoi ton encadreur veux te faire réinventer la roue? Il compte mettre une application concurrente sur le marché? (Ce qui serait une raison très valable) ou c'est juste pour le plaisir de refaire en moins bien ce qui existe (ce qui vaudrait un paquet de points en moins lors du jury).
Et choisir un language pour le plaisir de choisir un language :/ Ca va un peux à l'encontre des bonne pratique, on choisi le langage approprié à un besoin donnée (multi plateforme -> VB out, accès aux système d'exploitation -> java fortement déconseillé). On en arriverai à C ou C++.
merci,
mon encadreur ne ma pas donner l'idée de l'application mais je lui ai proposé car la société a accepté un excès de stagiaires vue les circonstance du pays au mois de janvier.(j'été obliger de chercher moi même une idée et l'encadreur a accepté)j'ai eu l'idée lorsque j'été en train de passer un stage ouvrier.
pour le langage il a proposé le vb car il développe avec vb.mais en vb tout existe(dans les forums tu peut télécharger cette application et la finir en 1 semaine)et puisque je fait mon pfe j'ai voulu travailler avec java parce que on n'a pas étudié durant notre formation le langage java c'est une opportunité pour mois d'étudier un nouveau langage de programmation.Aucun ne ma averti des limitation de java en réseau.
on m'a dit que je peux intégrer le c++ ou tout autres langage avec java est ce possible???
Oui c'est possible d'inclure du code C/C++ dans un programme java sous forme de bibliothèques natives(via JNI ou JNA) au prix de la portabilité de l'application.
Renseigne toi sur JNI et JNA, par exemple ici: http://mbaron.developpez.com/javase/jnijna/#LIV
Si vous avez peu de temps devant vous, préférez JNA, il ne nécessite pas de code C/C++, il permet de charger et appeler depusi java des dlls.
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