Scan ip réseau local sous winxp

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 154 fois - Téléchargée 34 fois

Contenu du snippet

Ce code permet de scanner les ip d'un réseau local. Il met le résultat dans deux fixhiers. Le premier fichier (valide.txt) est utilisé pour stocké les ip qui ne sont pas encore utilisées. Le second fichier stocke les ip dèja utilisées sur le réseau local. La partie de base de se programme a été trouvée dans le forum de se site, elle n'est pas de moi.

Source / Exemple :


Dim AdIP As String
Dim i As Integer
Dim nb As Integer
i% = 1
Open "c:\ip_valide.txt" For Output As #1
Open "c:\ip_non_valide.txt" For Output As #2
nb = 0
While i% <> 253

i% = i% + 1
AdIP$ = "192.168.1." & i%

'**************************
'Open "c:\windows\protect.org" For Output As #NumFich

  Dim Commande As String
    Dim Resultat As Long
    Dim Ad_a_tester As String
    Dim Handle As Long
    Dim Fichier As String
    Dim Ligne As String
    Dim EstOK As Boolean
    Dim t As Long
    
    EstOK = True
    
    Fichier = App.Path & "\" & AdIP$
    Ad_a_tester = AdIP
    Commande = "c:\windows\system32\cmd.exe /cping " & Ad_a_tester & " -n 1 >" & Fichier               'fait un ping d'une trame sur le réseau a l'@ ad_a_tester

    Resultat = Shell(Commande, vbMinimizedNoFocus)

    t = Timer
    Do
        If Timer - t > 5 Then Exit Do
        DoEvents
    Loop
    Do
        DoEvents
        Err = 0
        On Error Resume Next
        If FileLen(Fichier) <> 0 And Err = 0 Then Exit Do
    Loop
    EstOK = True
    Handle = FreeFile
    Open Fichier For Input As #Handle
        While Not EOF(Handle)
            Input #Handle, Ligne
            If InStr(Ligne, "d'attente de la demande") <> 0 Or InStr(Ligne, "Impossible de joindre") <> 0 Then
                EstOK = False
                GoTo sort_bouc
            End If
            If InStr(Ligne, "ponse de") <> 0 Or InStr(Ligne, "Statistiques Ping") <> 0 Then
                EstOK = True
                
            End If
        Wend
        
sort_bouc:
        
    Close #Handle
    Kill Fichier
    If EstOK = True Then
        ' mettre l'ip dans un fichier nommé no valide
        nb% = nb% + 1
        Print #2, AdIP$
    Else
        ' mettre l'ip dans un fichier nommé valide
        Print #1, AdIP$
    End If
    
On Error Resume Next
ProgressBar1.Value = Int((100 * i) / 253)
'****************************

Label1.Caption = "   ~~ Traitement en cours ...  ~~             Nombre de pc trouvés : " & nb%
Wend
Label1.Caption = "Vous pouvez maintenant éditer les fichiers c:\ip_valide et c:\ip_non_valide. Nb pc trouvés : " & nb%

Conclusion :


voila ++ et enjoy yourself :-)

A voir également

Ajouter un commentaire

Commentaires

sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32 -
ouaip... mais tu sais qu'on peut configurer une machine pour ne pas qu'elle réponde aux ping ???
franckylourson
Messages postés
2
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
6 juin 2003
-
Mon code fonctionne si et seulement si toutes les machines sont configurées de manière à répondre au ping. Il faut aussi noter que toutes le machines du réseau doivent être allumées.
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32 -
bah ouaih... donc c pas gagné !
franckylourson
Messages postés
2
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
6 juin 2003
-
En tant qu'administrateur du réseau, tu peux dire aux utilisateurs de ne pas désactivé le ping et de laisser allumer toutes les machines à une certaine heure d'un jour certain.

voila :-)
cs_sub-zero
Messages postés
98
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
12 juillet 2005
-
mouarf encore un ping par API IcmpCreateFile/IcmpSendEcho je dis pas ms la par ligne de commande c très contraignant.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.