Batch Script for generating random ip addresses

Cleptography's Avatar author of Batch Script for generating random ip addresses
This is an article on Batch Script for generating random ip addresses in Programming.
Rated 5.00 By 1 users
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
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
If you liked this article do nominate this article for Article of the month - Sep 2010 Before 15th of October 2010.
0
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Article selected for voting for Article of the month - Sep 2010. Cast your vote now before October 27th, 2010
0
tennsoccerdr's Avatar, Join Date: Oct 2010
Go4Expert Member
Quick question: What would be the best use for this?