Ik veronderstel dat Batch hier thuishoort, laat iets weten zoniet.
Mijn script dat de NAT translation doet is in de smaak gevallen bij de netwerkers en ik ben nu gewoon nog wat errorchecks aan het invoeren. Het is een lang script dus ik zal enkel de relevante fragmenten posten (met dummy waardes).
Eerst wordt een extern IP adres gevraagd aan de gebruiker. Dit wordt in 4 variabelen gedeeld (A, B, C en D):
Vervolgens gaat het script kijken of het wel een geldig IP adres is, laat ons dit de procedure SYNTAXCHECK noemen:
En dan wordt het adres, indien er geen error was, door een hele lijst met omzettingen gegooid, afhankelijk of het /8 /16 of /24 is. Indien het adres niet interne adres niet gekend is wordt de gebruiker naar een andere error (ERROR2) gestuurd dan de vorige error (ERROR1):
(De statische manier van werken was onvermijdelijk aangezien er geen enkele consequente logica in de echte gevens zit)
Mijn probleem: een aantal adressen geven een error wanneer er geen is. Ingave van 172.28.137.100 geeft een ERROR1 (Erroneous IP address), dus ik weet zeker dat het geen probleem is om de waarde te vinden in de lijst want dan zou ik ERROR2 (Unknown range) krijgen. Het adres 170.20.1.100 wordt dan weer wél goed omgezet. Ik heb verschillende adressen met dit probleem en zie er geen logica in wanneer het probleem zich stelt of niet. Kortom: ik snap niet waar bepaalde adressen blijkbaar falen op de SYNTAXCHECK-procedure. Om te debuggen heb ik de geregistreerde waarde laten ECHOen bij ERROR1 en ik krijg waardes terug die perfect aan de SYNTAXCHECK lijken te voldoen.

Volledigheidshalve: op het einde van een zoekopdracht worden alle variabelen netjes geleegd. Als iemand weet wat mijn fout is: ik hoor het graag.
Mijn script dat de NAT translation doet is in de smaak gevallen bij de netwerkers en ik ben nu gewoon nog wat errorchecks aan het invoeren. Het is een lang script dus ik zal enkel de relevante fragmenten posten (met dummy waardes).
Eerst wordt een extern IP adres gevraagd aan de gebruiker. Dit wordt in 4 variabelen gedeeld (A, B, C en D):
Batchfile:
1
2
| SET /P IP1=The internal address is: FOR /F "tokens=1,2,3,4 delims=." %%a IN ("%IP1%") DO SET A=%%a&SET B=%%b&SET C=%%c&SET D=%%d |
Vervolgens gaat het script kijken of het wel een geldig IP adres is, laat ons dit de procedure SYNTAXCHECK noemen:
Batchfile:
1
2
3
4
5
6
7
8
| IF '%A%' GTR '255' GOTO :ERROR1 IF '%A%' LEQ '0' GOTO :ERROR1 IF '%B%' GTR '255' GOTO :ERROR1 IF '%B%' LSS '0' GOTO :ERROR1 IF '%C%' GTR '255' GOTO :ERROR1 IF '%C%' LSS '0' GOTO :ERROR1 IF '%D%' GTR '255' GOTO :ERROR1 IF '%D%' LSS '0' GOTO :ERROR1 |
En dan wordt het adres, indien er geen error was, door een hele lijst met omzettingen gegooid, afhankelijk of het /8 /16 of /24 is. Indien het adres niet interne adres niet gekend is wordt de gebruiker naar een andere error (ERROR2) gestuurd dan de vorige error (ERROR1):
Batchfile:
1
2
3
4
5
| IF '%A%.%B%.%C%'=='130.1.1' SET WXY=10.1.0&&GOTO :RESULT1 IF '%A%.%B%.%C%'=='130.1.2' SET WXY=10.2.1&&GOTO :RESULT1 IF '%A%.%B%.%C%'=='130.1.3' SET WXY=10.3.2&&GOTO :RESULT1 IF '%A%.%B%.%C%'=='130.1.4' SET WXY=10.4.3&&GOTO :RESULT1 GOTO :ERROR2 |
(De statische manier van werken was onvermijdelijk aangezien er geen enkele consequente logica in de echte gevens zit)
Mijn probleem: een aantal adressen geven een error wanneer er geen is. Ingave van 172.28.137.100 geeft een ERROR1 (Erroneous IP address), dus ik weet zeker dat het geen probleem is om de waarde te vinden in de lijst want dan zou ik ERROR2 (Unknown range) krijgen. Het adres 170.20.1.100 wordt dan weer wél goed omgezet. Ik heb verschillende adressen met dit probleem en zie er geen logica in wanneer het probleem zich stelt of niet. Kortom: ik snap niet waar bepaalde adressen blijkbaar falen op de SYNTAXCHECK-procedure. Om te debuggen heb ik de geregistreerde waarde laten ECHOen bij ERROR1 en ik krijg waardes terug die perfect aan de SYNTAXCHECK lijken te voldoen.

Volledigheidshalve: op het einde van een zoekopdracht worden alle variabelen netjes geleegd. Als iemand weet wat mijn fout is: ik hoor het graag.