Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Programming (http://www.go4expert.com/articles/programming/)
-   -   Batch Script for generating random ip addresses (http://www.go4expert.com/articles/batch-script-generating-random-ip-t23213/)

Cleptography 6Sep2010 07:09

Batch Script for generating random ip addresses
 
This is a two part batch script that generates a specified number of random ip addresses, or can take input from an external script file to pass to the utility. There are much faster ways of doing this of course but hey it works. Save as GenIps.bat and RunIps.bat in the same directory. From the command line type GenIps to retrieve usage info.

Batch Script for generating random ip addresses.
--------------------------------------------------------
(GENIPS.BAT)
Code:

@echo off
:: Script 1

REM The first numerical digit in a scope represents the value to not exceed
REM The second numerical digit represents the value to not go below

:SET_LOCAL_ENVIRONMENT
REM Set the number of Ips to generate
        set one=%~1

REM Set the first group 1/4 scope ip range
        set two=%~2
        set three=%~3

REM Set the second group 2/4 scope ip range
        set four=%~4
        set five=%~5

REM Set the third group 3/4 scope ip range
        set six=%~6
        set seven=%~7

REM Set the fourth group 4/4 scope ip range
        set eight=%~8
        set nine=%~9

REM Check user parameters
:USER_PARAMETERS
        if /i [%~1]==[] (goto :USAGE)
        if /i [%~1]==[-script] (if /i [%~2]==[-?] (goto :USAGE2))
        if /i [%~1]==[-script] (goto :RUN_SCRIPT)

REM Check if using external script
        if %~1 leq 1 goto :RUN_IPS
        if %~1 geq 1 goto :RUN_IPS

REM Pass command line parameters to child application RunIps
:RUN_IPS
        set CommandCode=1
        call RunIps
        goto :eof

REM Pass script parameters to child application RunIps
:RUN_SCRIPT
        set CommandCode=2
        for /f "skip=1 tokens=*" %%a in (%~2) do (
        RunIps %%a
        )
        goto :eof

REM Command line usage
:USAGE
        cls
        echo USAGE: 
        echo.
        echo  GenIps [# x's 2 -^>] [9 Args]
        echo.
        echo EXAMPLE:
        echo.
        echo  GenIps 25 255 192 150 50 250 120 170 40
        echo.
        echo NOTES:
        echo.
        echo  The 1st digit represents the number of
        echo  Ips to produce while the next 8 digits
        echo  Grouped in sets of 2 represent one of
        echo  The four places within an ip address
        echo  The first digit in a group represents
        echo  The max value while the second digit
        echo  Represents the low value. Low values
        echo  Should never be greater than the max
        echo  Values they preceed.
        echo  At least 2 ips are needed to Generate
        echo  A successfull exit code
        echo.
        echo  Type: "GenIps -script -?" to retrieve
        echo  The script usage within GenIps
        echo.
        echo DETAILED_EXAMPLES:
        echo.
        echo  GenIps 2 192 192 168 168 1 1 100 50
        echo.
        echo  The above command would produce output
        echo  like so . . .
        echo.
        echo  192.168.1.78
        echo  192.168.1.92
        echo.
        echo  Taking the name of the program as parameter "%%0"
        echo  %%1 == "2" being the number of Ips to generate
        echo  . . . and parameters %%2-%%9 being the average
        echo  If you use the same values for both greater than
        echo  And less than that place holder will stay as is
        echo  Another example . . .
        echo.
        echo  GenIps 5 255 192 255 168 200 100 255 143
        echo.
        echo  Would produce output like so . . .
        echo.
        echo  217.235.113.253
        echo  213.179.161.214
        echo  236.231.146.204
        echo  194.170.102.149
        echo  226.209.115.145
        echo.
        echo BROKEN_DOWN:
        echo.
        echo  CommandName NumberOfIps Group01 Group02 Group03 Group04
        echo  ----------- ----------- ------- ------- ------- -------
        echo    GenIps        5      255 192 255 168 200 100 255 143
        echo.
        echo GROUPS:
        echo.
        echo  A group consist of two numerical values single spaced
        echo  255 192 under "Group01" would be our first group in
        echo  The above example.
        echo  The first value is the number that will not be exceeded
        echo  While the second value represents the number to not go
        echo  Below.
        goto :eof

REM Script usage
:USAGE2
        cls
        echo USAGE:
        echo.
        echo  GenIps [switch] [FileName]
        echo.
        echo EXAMPLE:
        echo.
        echo  GenIps -script MyFile.txt
        echo.
        echo NOTES:
        echo.
        echo  Script Ip files are plain text
        echo  Files that house all numerical
        echo  Values derived from the childs
        echo  Application RunIps.
        echo  The 1st parameters in a script
        echo  Should be the number of ips to
        echo  Generate not the command GenIp
        echo  The 1st line in the script txt
        echo  Should be the name of the file
        echo  Or some sort of header like in
        echo  C or an Include reference.
        echo.
        echo SCRIPT_EXAMPLE:
        echo.
        echo -------------------------------
        echo ^<GenIp_Script_File^>
        echo.
        echo  7 192 167 255 11 192 70 50 10
        echo  5 255 190 255 50 192 30 95 80
        echo  3 192 167 255 67 192 30 99 20
        echo  9 255 190 255 92 192 30 95 20
        echo  4 192 192 255 20 192 30 90 20
        echo  2 255 190 255 88 192 30 95 20
        echo -------------------------------
        echo.
        echo  Copy n paste everything within
        echo  The dashed lines and save as a
        echo  txt file and then from the cmd
        echo  Line type:
        echo  GenIps -script [File Name].txt
        echo  To engage the scripts contents
        goto :eof

:MISSING_FILES
        cls
        echo ERROR:
        echo.
        echo  File "RunIps.bat" is missing or was not found in your path
        echo  Add "RunIps.bat" to your path or put the file in the same
        echo  Directory as "GenIps.bat" and restart the application
        echo  Application now exiting . . .
        goto :eof


(RUNIPS.BAT)
Code:

@echo Off
:: Script 2

REM Check Args from parent application GenIps
        if /i [%CommandCode%]==[] (goto :MISSING_GENIPS)
        if /i [%CommandCode%]==[1] (goto :RUN_COMMAND)
        if /i [%CommandCode%]==[2] (goto :RUN_SCRIPT)

REM Begin generating random ip addresses
:RUN_COMMAND
        set LoopNumber=1
        echo.
       
:BEGIN
        set /a LoopNumber=%LoopNumber%+1
        if "%LoopNumber%" == "%one%" goto :END1
       
:A
        if /i [%two%]==[%three%] (set IPone=%two%) & (goto :B)
        set IPone=%Random%
        if %IPone% GTR %two% goto :A
        if %IPone% LSS %three% goto :A
        goto :B
       
:B
        if /i [%four%]==[%five%] (set IPtwo=%four%) & (goto :C)
        set IPtwo=%Random%
        if %IPtwo% GTR %four% goto :B
        if %IPtwo% LSS %five% goto :B
        goto :C
       
:C
        if /i [%six%]==[%seven%] (set IPthr=%six%) & (goto :D)
        set IPthr=%Random%
        if %IPthr% GTR %six% goto :C
        if %IPthr% LSS %seven% goto :C
        goto :D
       
:D
        if /i [%eight%]==[%nine%] (set IPfor=%eight%) & (goto :E)
        set IPfor=%Random%
        if %IPfor% GTR %eight% goto :D
        if %IPfor% LSS %nine% goto :D
        goto :E
       
:E
        echo %IPone%.%IPtwo%.%IPthr%.%IPfor%
        goto :BEGIN
       
:END1
        set LoopNumber=1
       
:BEGIN2
        set /a LoopNumber=%LoopNumber%+1
        if "%LoopNumber%" == "4" goto :END2
       
:A2
        if /i [%two%]==[%three%] (set IPone=%two%) & (goto :B2)
        set IPone=%Random%
        if %IPone% GTR %two% goto :A2
        if %IPone% LSS %three% goto :A2
        goto :B2
       
:B2
        if /i [%four%]==[%five%] (set IPtwo=%four%) & (goto :C2)
        set IPtwo=%Random%
        if %IPtwo% GTR %four% goto :B2
        if %IPtwo% LSS %five% goto :B2
        goto :C2
       
:C2
        if /i [%six%]==[%seven%] (set IPthr=%six%) & (goto :D2)
        set IPthr=%Random%
        if %IPthr% GTR %six% goto :C2
        if %IPthr% LSS %seven% goto :C2
        goto :D2
       
:D2
        if /i [%eight%]==[%nine%] (set IPfor=%eight%) & (goto :E2)
        set IPfor=%Random%
        if %IPfor% GTR %eight% goto :D2
        if %IPfor% LSS %nine% goto :D2
        goto :E2
       
:E2
        echo %IPone%.%IPtwo%.%IPthr%.%IPfor%
        goto :BEGIN2
       
:END2
        set CommandCode=
        goto :eof

REM Begin generating ip addresses from script command
:RUN_SCRIPT
        set LoopNumber=1
        echo.
       
:BEGIN3
        set /a LoopNumber=%LoopNumber%+1
        if "%LoopNumber%" == "%~1" goto :END3
       
:AA
        if /i [%~2]==[%~3] (set IPone=%~2) & (goto :BB)
        set IPone=%Random%
        if %IPone% GTR %~2 goto :AA
        if %IPone% LSS %~3 goto :AA
        goto :BB
       
:BB
        if /i [%~4]==[%~5] (set IPone=%~4) & (goto :CC)
        set IPtwo=%Random%
        if %IPtwo% GTR %~4 goto :BB
        if %IPtwo% LSS %~5 goto :BB
        goto :CC
       
:CC
        if /i [%~6]==[%~7] (set IPone=%~6) & (goto :DD)
        set IPthr=%Random%
        if %IPthr% GTR %~6 goto :CC
        if %IPthr% LSS %~7 goto :CC
        goto :DD
       
:DD
        if /i [%~8]==[%~9] (set IPone=%~8) & (goto :EE)
        set IPfor=%Random%
        if %IPfor% GTR %~8 goto :DD
        if %IPfor% LSS %~9 goto :DD
        goto :EE
       
:EE
        echo %IPone%.%IPtwo%.%IPthr%.%IPfor%
        goto :BEGIN3
       
:END3
        set LoopNumber=1
       
:BEGIN4
        set /a LoopNumber=%LoopNumber%+1
        if "%LoopNumber%" == "4" goto :END4
       
:AA2
        if /i [%~2]==[%~3] (set IPone=%~2) & (goto :BB2)
        set IPone=%Random%
        if %IPone% GTR %~2 goto :AA2
        if %IPone% LSS %~3 goto :AA2
        goto :BB2
       
:BB2
        if /i [%~4]==[%~5] (set IPone=%~4) & (goto :CC2)
        set IPtwo=%Random%
        if %IPtwo% GTR %~4 goto :BB2
        if %IPtwo% LSS %~5 goto :BB2
        goto :CC2
       
:CC2
        if /i [%~6]==[%~7] (set IPone=%~6) & (goto :DD2)
        set IPthr=%Random%
        if %IPthr% GTR %~6 goto :CC2
        if %IPthr% LSS %~7 goto :CC2
        goto :DD2
       
:DD2
        if /i [%~8]==[%~9] (set IPone=%~8) & (goto :EE2)
        set IPfor=%Random%
        if %IPfor% GTR %~8 goto :DD2
        if %IPfor% LSS %~9 goto :DD2
        goto :EE2
       
:EE2
        echo %IPone%.%IPtwo%.%IPthr%.%IPfor%
        goto :BEGIN4
       
:END4
        set CommandCode=
        goto :eof

:MISSING_GENIPS
        cls
        echo ERROR:
        echo.
        echo  To run this script use its parent application
        echo  To engage the local programs environment vars
        echo  Type: GenIps without args to display the help
        goto :eof

:MISSING_FILES
        cls
        echo ERROR:
        echo.
        echo  File "GenIps.bat" is missing or was not found in your path
        echo  Add "GenIps.bat" to your path or put the file in the same
        echo  Directory as "RunIps.bat" and restart the application from
        echo  Its parent application "GenIps.bat"
        echo  Application now exiting . . .
        goto :eof


shabbir 4Oct2010 10:21

Re: Batch Script for generating random ip addresses
 
If you liked this article do nominate this article for Article of the month - Sep 2010 Before 15th of October 2010.

shabbir 17Oct2010 12:54

Re: Batch Script for generating random ip addresses
 
Article selected for voting for Article of the month - Sep 2010. Cast your vote now before October 27th, 2010

tennsoccerdr 5Nov2010 03:33

Re: Batch Script for generating random ip addresses
 
Quick question: What would be the best use for this?


All times are GMT +5.5. The time now is 12:28.