IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Récupérer hostname linux & windows


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut Récupérer hostname linux & windows
    Salut,

    j'ai trouvé ce script pour récupérer le hostname et qui fonctionne très bien sous windows XP (sous Vista pas débuggé mais ca fonctionne pas) mais par contre sous linux il me renvoie une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private static String getComputerFullName (){
            String hostName = null;	        
            InetAddress addr = null;
    		try {
    			addr = InetAddress.getLocalHost();			
    			hostName = new String(addr.getHostName());			
    		} catch (UnknownHostException e) {
    			new Log("[Code Perso] Nom d'hote inconnu : " + e);
    		}
           return hostName;
         }
    Sous linux il me renvoie l'erreur suivante :
    [Code Perso] Nom d'hote inconnu : java.net.UnknownHostException: grabriel-kubuntu: grabriel-kubuntu
    Ma machine s'appel 'grabriel-kubuntu'

    il s'arrête a la premier ligne du try et addr reste null

    j'avais pensé parsé le message d'erreur sous linux... faute de mieux.

    Si quelqu'un à une idée.
    J'ai déjà vérifié et System.getProperties() ne retourne pas le nom de la machine.

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Ton code fonctionne chez moi (RHEL 5 sur serveur Dell C2D)...

  3. #3
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Ton code fonctionne chez moi (RHEL 5 sur serveur Dell C2D)...

    D'après ce que j'ai trouvé à droite et à gauche sur internet ca dépends d'un paramètre de sécurité....c'est peut etre pour ca que ca passe sur ta distrib.



    J'ai trouvé une réponse sur un autre forum

    J2se 1.4.2 and 5.0 specifications for java.net.InetAddress.getLocalHost() read, that if there
    is a security manager, its checkConnect method is called with the local host name and -1 as
    its arguments to see if the operation is allowed.
    avec ce code

    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
     
    import java.net.*; 
     
    public class test2 { 
        public static void main(String[] args) { 
            try { 
                System.setSecurityManager(new Inet_SecurityManager());
                System.out.println("Loopback address = " + InetAddress.getLocalHost());
            } catch (Exception e){ 
                System.out.println("Unexpected exception = " + e); 
            }; 
        } 
    } 
     
    class Inet_SecurityManager extends SecurityManager { 
        public void checkConnect(String host, int port) { 
            super.checkConnect(host,port); 
            throw new SecurityException();
        }
    }

    Cette fonction renvoie l'adresse de loopback et donc hostname=localhost

    Mais si je la rajoute à mon code et que je fais un addr = InetAddress.getLocalHost(); j'ai plus l'exception mais l'adresse que je récupère c'est 127.0.0.1...

    j'ai essayé de modifier les propriétés de sécurité mais ca change rien

    java.security.Security.setProperty("networkaddress.cache.ttl" , "-1");
    networkaddress.cache.ttl (default: -1)
    Specified in java.security to indicate the caching policy for successful
    name lookups from the name service. The value is specified as as integer
    to indicate the number of seconds to cache the successful lookup.

    A value of -1 indicates "cache forever".

    Dans la javadoc ils parlent de securitymanager et ses petits amis mais je capte rien!!!
    Si quelqu'un y comprends quelque chose!!


  4. #4
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Confirmation de ce que je disais plus haut :

    Note that any such method will first check Java's Security Manager to
    see if the hostname/address lookup is permitted. It should be allowed by
    default on most standard environments, though.
    Sous Ubuntu et Vista c'est pas le cas!!!

    Si quelqu'un à plus d'infos sur ce point!! je suis preneur.

    Pour rappel j'ai déjà essayé networkaddress.cache.ttl en le mettant à -1.

  5. #5
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    Citation Envoyé par grabriel Voir le message
    Confirmation de ce que je disais plus haut :



    Sous Ubuntu et Vista c'est pas le cas!!!

    Si quelqu'un à plus d'infos sur ce point!! je suis preneur.

    Pour rappel j'ai déjà essayé networkaddress.cache.ttl en le mettant à -1.
    Je viens de tester sur mon install Kunbuntu et ça fonctionne aussi... Je sais pas quel paramétrage fait que ça passe ou pas, mes installs Java et Kubuntu sont vraiment de base, est-ce que c'est pas une histoire de SELinux ou qqch dans le genre ?

  6. #6
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    mes installs Java et Kubuntu sont vraiment de base,
    Tu m'inquiètes! J'ai une install de kubuntu de base aussi mon java c'est le .bin (de base, celui qui s'install tout seul) version 1.6 que j'ai choper y'a trois jours sur le site de sun....

    c'est pas une histoire de SELinux ou qqch dans le genre ?
    C'est quoi ???

    ----temps de reflexion ----- (Merci David PJ) ----

    J'ai vérifié dans mon etc/hosts et je n'avais que l'adresse localhost j'ia rajouté mon ip et la pouf pouf ca fonctionne!!!!




    Reste encore à faire fonctionner la chose sous Vista!!

    Nota sous vista ca fonctionne aussi!

    MERCI DevTeam_

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mozilla - Linux et Windows
    Par Fl0r3nt dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 18/06/2004, 09h45
  2. Accés a un disque dur LINUX sous WINDOWS
    Par [_Key_Zee__] dans le forum Administration système
    Réponses: 9
    Dernier message: 18/04/2004, 10h29
  3. Linux et windows
    Par titiyo dans le forum Installation
    Réponses: 4
    Dernier message: 16/03/2004, 09h40
  4. Reseau Linux et Windows
    Par Fooshi dans le forum Développement
    Réponses: 2
    Dernier message: 02/10/2003, 09h25
  5. Etat de la pile sous Linux et Windows
    Par Bibouda dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 16/02/2003, 01h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo