14. april 2009 - 15:39
Der er
2 kommentarer og
1 løsning
Convertering af IP Range til CIDR
Hej Experter! :D
Jeg har et problem som jeg håber i kan hjælpe mig med. Jeg har en textfil som indeholder data i følgende orden:
1. 62.27.6.64 62.27.6.127
2. 62.44.128.0 62.44.191.255
3. 62.61.128.0 62.61.159.255
..
...
Jeg skal have konverteret hver eneste linie til CIDR f.eks til '62.27.6.64/26' hvis vi tager udgangspunkt i linie 1. Det jeg skal gøre, er at læse fra textfilen (hvilket jeg kan) og derefter subnette (hvilket jeg ikke er god til). Håber der er nogen der kan hjælpe.
På forhånd tak!
Mvh
Kalle
14. april 2009 - 16:14
#1
Jeg kunne slet ikke komme i tanke om en god måde at kode det på, men har er i hvert fald et bud der virker :) dog skal den første ip være netværks adressen i subnettet og den anden ip være broadcast adressen...som dine 3 eksempler også er...
Den udskriver /999 i det nye dokument, hvis det ikke er et gyldigt subnet...
Kopier og gem som filnavn.vbs - ændrer lokationen for readfile og writefile :)
Dim FSO, readfile, writefile
Dim arrIP, arrFirstIP, arrSecondIP
Dim subnet, err
Set FSO = CreateObject("Scripting.FileSystemObject")
Set readfile = FSO.OpenTextFile("c:\ip\ip.txt", 1, false)
Set writefile = FSO.CreateTextFile("c:\ip\ipny.txt", true)
Do While Not readfile.AtEndOfStream
subnet = 0
arrIP = Split(readfile.ReadLine, " ")
arrFirstIP = Split(arrIP(1), ".")
arrSecondIP = Split(arrIP(2), ".")
If arrSecondIP(0) = arrFirstIP(0) Then
subnet = subnet + 8
Elseif (arrSecondIP(0)-arrFirstIP(0)) = 1 Then
subnet = subnet + 7
Elseif (arrSecondIP(0)-arrFirstIP(0)) = 3 Then
subnet = subnet + 6
Elseif (arrSecondIP(0)-arrFirstIP(0)) = 7 Then
subnet = subnet + 5
Elseif (arrSecondIP(0)-arrFirstIP(0)) = 15 Then
subnet = subnet + 4
Elseif (arrSecondIP(0)-arrFirstIP(0)) = 31 Then
subnet = subnet + 3
Elseif (arrSecondIP(0)-arrFirstIP(0)) = 63 Then
subnet = subnet + 2
Elseif (arrSecondIP(0)-arrFirstIP(0)) = 127 Then
subnet = subnet + 1
Elseif (arrSecondIP(0)-arrFirstIP(0)) = 255 Then
subnet = subnet + 0
Else
err = True
End If
If arrSecondIP(1) = arrFirstIP(1) Then
subnet = subnet + 8
Elseif (arrSecondIP(1)-arrFirstIP(1)) = 1 Then
subnet = subnet + 7
Elseif (arrSecondIP(1)-arrFirstIP(1)) = 3 Then
subnet = subnet + 6
Elseif (arrSecondIP(1)-arrFirstIP(1)) = 7 Then
subnet = subnet + 5
Elseif (arrSecondIP(1)-arrFirstIP(1)) = 15 Then
subnet = subnet + 4
Elseif (arrSecondIP(1)-arrFirstIP(1)) = 31 Then
subnet = subnet + 3
Elseif (arrSecondIP(1)-arrFirstIP(1)) = 63 Then
subnet = subnet + 2
Elseif (arrSecondIP(1)-arrFirstIP(1)) = 127 Then
subnet = subnet + 1
Elseif (arrSecondIP(1)-arrFirstIP(1)) = 255 Then
subnet = subnet + 0
Else
err = True
End If
If arrSecondIP(2) = arrFirstIP(2) Then
subnet = subnet + 8
Elseif (arrSecondIP(2)-arrFirstIP(2)) = 1 Then
subnet = subnet + 7
Elseif (arrSecondIP(2)-arrFirstIP(2)) = 3 Then
subnet = subnet + 6
Elseif (arrSecondIP(2)-arrFirstIP(2)) = 7 Then
subnet = subnet + 5
Elseif (arrSecondIP(2)-arrFirstIP(2)) = 15 Then
subnet = subnet + 4
Elseif (arrSecondIP(2)-arrFirstIP(2)) = 31 Then
subnet = subnet + 3
Elseif (arrSecondIP(2)-arrFirstIP(2)) = 63 Then
subnet = subnet + 2
Elseif (arrSecondIP(2)-arrFirstIP(2)) = 127 Then
subnet = subnet + 1
Elseif (arrSecondIP(2)-arrFirstIP(2)) = 255 Then
subnet = subnet + 0
Else
err = True
End If
If arrSecondIP(3) = arrFirstIP(3) Then
subnet = subnet + 8
Elseif (arrSecondIP(3)-arrFirstIP(3)) = 1 Then
subnet = subnet + 7
Elseif (arrSecondIP(3)-arrFirstIP(3)) = 3 Then
subnet = subnet + 6
Elseif (arrSecondIP(3)-arrFirstIP(3)) = 7 Then
subnet = subnet + 5
Elseif (arrSecondIP(3)-arrFirstIP(3)) = 15 Then
subnet = subnet + 4
Elseif (arrSecondIP(3)-arrFirstIP(3)) = 31 Then
subnet = subnet + 3
Elseif (arrSecondIP(3)-arrFirstIP(3)) = 63 Then
subnet = subnet + 2
Elseif (arrSecondIP(3)-arrFirstIP(3)) = 127 Then
subnet = subnet + 1
Elseif (arrSecondIP(3)-arrFirstIP(3)) = 255 Then
subnet = subnet + 0
Else
err = True
End If
If err = True Then
subnet = 999
End If
writefile.WriteLine(arrIP(1) & "/" & subnet)
Loop
readfile.close
writefile.close