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

C# Discussion :

Récupérer instance MySQL d'un nom de domaine


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut Récupérer instance MySQL d'un nom de domaine
    Bonjour à tous.

    Je développe actuellement une application c# sous visual studio 2012 et j'aimerais obtenir toutes les instances de BDD MySQL présente sur mon nom de domaine (réseau local).

    J'arrive a récupérer tous les SQLServer grâce à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SqlDataSourceEnumerator sqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance;
                                DataTable servers = sqlDataSourceEnumerator.GetDataSources();
    et j'aimerais quelque chose de semblable pour les MySQL.

    Merci d'avance de votre aide !

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Je ne sais pas s'il existe un équivalent pour MySQL, mais tu dois pouvoir utiliser WMI. La classe que tu mentionnes pour SQL Server découvre les instances en utilisant l'UDP... Peut-être qu'il est aussi possible d'implémenter ca pour MySQL.

    En ce qui concerne WMI, la logique c'est de se connecter à tes machines et à vérifier les Services (classe Win32_Service). Si le chemin contient le nom de l'exécutable de MySQL alors c'est un service MySQL, donc une instance :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var @class = new ManagementClass("Win32_Service"); 
    var instances = @class.GetInstances().Cast<ManagementObject>().ToList(); 
    foreach (ManagementObject obj in instances) 
    { 
        if (obj.GetPropertyValue("PathName").ToString().Contains("mysqld.exe"))    // vérifie si le nom de l'exécutable est bien celui-ci...
        {
            // C'est une instance MySQL
        }	
    }
    Pour référence : Win32_Service WMI Class.

    Pour info je n'ai pas utilisé MySQL depuis très longtemps vu les lacunes dont il souffre, donc il y a peut-être d'autres facons de procéder que je ne connais pas.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Bonjour et merci de ta réponse j'ai un petit soucis avec la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (obj.GetPropertyValue("PathName").Contains("mysqld.exe"))
    Visual ne veut même pas compiler, il me dit : "'object" ne contient pas une définition pour 'Constrains' et la meilleur surcharge de la méthode d'extension 'System.Linq.Queryable.Contains<TSource>[...] contient des arguments non valides :s

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Arf oui, essaie en castant obj en ManagementObject :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach (ManagementObject obj in instances)
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    ça ne veut toujours pas... mais j'ai réussis a corriger l'erreur en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    o.GetPropertyValue("PathName").ToString().Contains("mysqld.exe")
    mais je ne sais pas si c'est correct ?

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Si si c'est correct En effet il manquait le cast en string, comme je n'ai pas écrit ce code dans Visual Studio je suis passé à côté... J'ai corrigé le post initial.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    D’accord, merci beaucoup ! Par contre j'ai une petite question ^^ Lorsque je lance l'application, cela me renvoi uniquement mon instance de MySQL. Or j'aimerais parcourir tout le domaine auquel je suis rataché pour récupérer toutes les instance de MySQL (serveur distant en gros ). Possible? =)

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Oui bien sûr, avec un ManagementScope. Tu trouveras plus d'info ici : How To: Connect to a Remote Computer. Remplace \\FullComputerName\ par le nom de la machine que tu veux vérifier.

    [EDIT] Pour info si tu es en entreprise, vérifie que les ports sont ouverts et que tu as les droits nécessaires pour pouvoir lancer ce type de requête et obtenir les résultats.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    D'accord donc si j'ai bien compris, je dois au préalable connaitre toutes mes machines distantes, ensuite boucler pour les interroger via ManagementScope puis tester si une instance de MySQL est présente sur celle-ci, c'est bien cela? =)

  10. #10
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Oui c'est bien ca
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Oui c'est bien ca
    D'accord merci On ne peut pas lui passer directement un nom de domaine en paramètre, et qu'il le parcours lui même ? cela simplifierai énormément la chose ... :p

  12. #12
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ca n'existe pas nativement, mais c'est possible. Tu peux regarder ce qui est fait ici : HostName, IP, and MAC Address ou encore là : How to Scan Computers in Your Network Using the Registry or WMI.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Merci beaucoup pour tes réponses j'ai un dernier léger soucis :/ (désolé pour les questions à répétition ...) Lorsque j'esseye de me connecter via le ManagementScope, une fenêtre s'affiche et bloque mon programme :

    Nom : erreur.png
Affichages : 288
Taille : 8,2 Ko

    Le chemin que je lui passe est pourtant le bon ...

  14. #14
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Comme indiqué plus haut, as-tu vérifié qu'il n'y a pas de firewall (hardware et/ou logiciel) entre ton PC et la machine cible ? Apparemment tu travailles au sein d'un domaine : as-tu suffisamment de droits pour réaliser cette opération ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Oui j'ai vérifier et j'ai normalement tout les droits. D'autant plus que lorsque j’essaye d'y accéder "à la main", cela fonctionne :s

  16. #16
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    On peut voir ton code ? Vérifie que l'username est bien correct "DOMAIN\Username", idem pour tous les autres paramètres.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    On peut voir ton code ? Vérifie que l'username est bien correct "DOMAIN\Username", idem pour tous les autres paramètres.
    Bien sur ! =)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ManagementScope scope = new ManagementScope("\\T-TITI.mon.domaine");
                                scope.Connect();
                                ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Product WHERE Name LIKE '%MySQL%'");
                                var s = new ManagementObjectSearcher(scope, query);
                                ManagementObjectCollection queryCollection = s.Get();
                                foreach (ManagementObject m in queryCollection)
                                {
                                    System.Windows.MessageBox.Show(m.ToString());
                                }
    Voilà

    [EDIT] J'ai essayé en mettant "mon.domaine\\T-TITI" mais l'erreur reste inchangée :/

  18. #18
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Essaie avec l'espace de nom par défaut pour WMI (CIMV2) :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var scope = new ManagementScope(@"DOMAIN\PCName\root\cimv2");
    Ca donne quoi ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Essaie avec l'espace de nom par défaut pour WMI (CIMV2) :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var scope = new ManagementScope(@"DOMAIN\PCName\root\cimv2");
    Ca donne quoi ?
    Même erreur

  20. #20
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    A mon avis il faut que tu fournisses tes infos de connexion...
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var options = new ConnectionOptions
    {
    	Impersonation = ImpersonationLevel.Impersonate,
    	EnablePrivileges = true,
    	Authentication = AuthenticationLevel.Packet,
    	Username = "DOMAIN\Ton User Name",
    	Password = "Ton mot de passe"
    };
     
    var scope = new ManagementScope(@"DOMAIN\PCName\root\CIMV2", options);
    Note : quand ton mot de passe va expirer dans l'AD, il faudra que tu mettes à jour ton programme, surtout s'il tourne de manière automatique. Le mieux pour éviter ca, c'est d'utiliser un compte de service.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment récupérer nom de domaine pris chez Lycos ?
    Par cortex024 dans le forum Domaines
    Réponses: 7
    Dernier message: 21/07/2009, 11h01
  2. C# Récupérer le nom des domaines d'un réseau
    Par EmacLi dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/08/2006, 08h24
  3. Récupérer le nom de domaine d'un visiteur
    Par Yoshidu62 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/07/2006, 11h54
  4. [C] Récupérer les noms de domaines
    Par Pico10 dans le forum Windows
    Réponses: 12
    Dernier message: 12/03/2006, 23h09
  5. Récupérer le nom de domaine d'appartenance d'un serveur
    Par Laurent Dardenne dans le forum Windows
    Réponses: 2
    Dernier message: 26/01/2004, 17h01

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