Récupérer le masque de sous réseau d'un autre ordinateur

Bonjour à tous,

Je fais appel à vous car malgré mes recherches, je n'ai pas trouvé de code VBA déjà existant répondant à mon besoin.

Toutefois, je soupçonne que cela soit faisable j'ai vue qu'il était possible d'effectuer un ping ou de récupérer une IP en utilisant des commandes WMI

Ma compréhension du VBA étant malheureusement quasi inexistant, et à part modifier des champs target, ça s'arrête presque à du copier coller...

Contexte :

Sur un réseau d'entreprise, il me faudrait pouvoir récupérer en live, le masque de sous réseau d'une autre machine (visible sur le réseau) à partir de son IP.

Pour ce faire, je dois utiliser un login et un mot de passe spécifique, mot de passe que je souhaite pouvoir conserver de manière temporaire, mais qui doit être ressaisie à chaque réouverture du classeur.

Moyen :

La manière de récupérer le masque via une commande CMD est la suivante :

wmic /node:ip_address /user:domaine\account /password:password nicconfig get IPsubnet

La réponse sera :

IPSubnet
{"255.255.XXX.YYY"}

Il me faut également stocker temporairement dans une cellule, le masque donné en réponse.

En pratique :

Première utilisation :

  1. Je saisie l'IP du PC cible en A1 et mon login (domaine\account) en C1
    Je clique sur un bouton d’exécution de la macro
    Un popup me demande mon mot de passe réseau
    le masque de sous réseau s'affiche dans en B1

Deuxième utilisation :

  1. Je saisie une autre IP en A1
    Je clique sur un bouton d’exécution de la macro
    le masque de sous réseau s'affiche dans en B1

Si je ferme mon classeur et le rouvre, le mot de passe doit être saisie à nouveau (pas le login)

J'espère ne pas avoir oublié quoi que ce soit,

D'avance merci pour votre aide

Bonjour,

C'est curieux que tu n'ais pas trouvé ton bonheur ici :

https://github.com/andreafortuna-org/VBAIPFunctions/blob/master/IPFunctions.vba

Bonjour,

une proposition

Dim userid, password
Sub getIP()
    If userid = "" Then
        userid = InputBox("Nom d'utilisateur (domaine\account)")
        password = InputBox("Password")
    End If
    If userid <> "" Then userid = " /user: " & userid: password = " /password:" & password
    ip_address = InputBox("adresse IP de la cible")
    Set dob = New MSForms.DataObject
    dob.SetText Text:=Empty
    dob.PutInClipboard
    commande = "wmic /node:" & ip_address & userid & password & " /output:CLIPBOARD nicconfig get IPsubnet "
    Shell commande, vbNormalFocus
    dl = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(dl, 1) = ip_address
    On Error GoTo erreur
    Application.Wait Now + TimeValue("0:00:02")
    dob.GetFromClipboard
    subnet = Split(dob.GetText(1), "{")(1)
    subnet = Split(subnet, "}")(0)
    Cells(dl, 2) = subnet
    Exit Sub
erreur:
    If Err <> 0 Then MsgBox "pas de réponse reçue dans le presse-papier"
End Sub
13ipbsubnet.xlsm (19.26 Ko)

Bonjour

@Oxydum

Merci pour ton lien

Je ne suis pas sur de comprendre ce que fait ce code, si c'est pour récupérer une IP, j'ai déjà cette information.

De plus, la gestion temporaire des login et password complique un peu plus mon besoin

@h2so4

Merci beaucoup pour ta réponse et ta proposition

J'avais un retour systématique m'indiquant que le cliboard était vide, il manquait une petite partie de la commande, mais avec la modif ci dessous c'est bon, je récupère le masque !

commande = "wmic /node:" & ip_address & " /user:" & userid & " /password:" & password & " /output:CLIPBOARD nicconfig get IPsubnet "

Encore merci pour vos retours

Bonsoir,

J'avais un retour systématique m'indiquant que le cliboard était vide, il manquait une petite partie de la commande, mais avec la modif ci dessous c'est bon, je récupère le masque !

Oui je me suis rendu compte que j'ai mis la version qui m'a permis de tester (sans userid et password) et j'avais corrigé en mettant le code et le classeur modifiés.

Rechercher des sujets similaires à "recuperer masque reseau ordinateur"