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 :
- 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 :
- 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
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.