Avatar billede butcher Nybegynder
24. november 2006 - 10:27 Der er 3 kommentarer

Er IP inden for defineret range?

Sidder og arbejder på et vbscript som skal køre en funktion når maskinens lokale IP er inden for et defineret range.

Jeg er kommet frem til følgende, men det virker ikke rigtigt, det virker som den ikke kan trække IP adressen ud ordenligt, fordi når jeg laver en wscript.echo ip2num(strIPAddress) får jeg bare 0 smidt tilbage i hovedet.

option Explicit
Public Function ip2num(ip)
Dim i, a, N
a = Split(ip, ".")
N = CDbl(0)
For i = 0 To UBound(a)
  N = N * 256 + a(i)
Next
ip2num = N
End Function

Dim strIPAddress
If ip2num(strIPAddress) >= ip2num("192.168.0.1") _
And ip2num(strIPAddress) <= ip2num("192.168.0.50") Then
wscript.echo "Din ip er i range."
Else
wscript.echo "Din ip er ikke i range"
End If
Avatar billede yellow Nybegynder
24. november 2006 - 10:58 #1
Hvor sætter du strIPAddress til en værdi?
Jeg prøvede at teste din funktion ved at sætte strIPAddress til nogle forskellige IPer, og den ser umiddelbart ud til at virke fint.
Avatar billede butcher Nybegynder
24. november 2006 - 11:23 #2
Ja men det så nok der problemet faktisk ligger, fordi det gøres ingen steder.

strIPAddress skal være lige med maskinens IP adresse, så det der mangler en funktion der trækker maskinens ip adresse ud og sætter lige med strIPAddress
Avatar billede butcher Nybegynder
24. november 2006 - 11:43 #3
Lidt google hjalp, fandt et script der piller ip adresser(ne) ud:

On Error Resume Next
Dim strComputer
Dim objWMIService
Dim propValue
Dim objItem
Dim SWBemlocator

Dim colItems

strComputer = "."
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"\root\CIMV2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration",,48)
For Each objItem in colItems
   
    For Each propValue in objItem.IPAddress
        If Not Isnodata(propValue) Then MsgBox "Your IP Address is: " & propValue
    Next
   
Next
'-------------------------------------------------------------------------------------
'=====================================================================================
' TITLE:            IsNoData
'
' PURPOSE:              Verify if passed parameter variable contain something.
'
' RETURN:            True if contain something, otherwise, False.
'
' HOW TO USE:        intResult = IsNoData(varSource) or
'                    If IsNoData(varSource) Then do something.
'
' AUTHOR:          Christian Sawyer
' ====================================================================================
Function IsNoData(varVal2Check)
    'Verify if varVal2Check contain something.
    On Error Resume Next
    If IsNull(varVal2Check) Or IsEmpty(varVal2Check) Then
        IsNoData = True
    Else
        If IsDate(varVal2Check) Then
            IsNoData = False
        ElseIf varVal2Check = "" Then
            IsNoData = True
        ElseIf Not IsObject(varVal2Check) Then
            IsNoData = False
        Else
            IsNoData = False
        End If
    End If
End Function

Hvilket også er fint, nok, men så skal det bare mixes sammen med det jeg har i forvejen og så kommer nok også en anden problemstilling, der kan jo kommer flere ip adresser, pga. flere netværkskort, men det er nok hvis bare en af dem opfylder mine "krav"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester