WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

TCPIP and IP Address

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

IP Scanner

Keywords:  IP Scanner scan local subnet

Here is a cool script that scans a local subnet. Get info from it and creats a log file: The subnet is limited to 254 ip addresses per scan.
AddExtender("wwipg32i.dll")
AddExtender("WWW9532I.DLL")

;***************************************************************************
;** 
;** String Init.
;** 
;***************************************************************************

:Home

Titre="IP_Scanner | By: René Germain (reneg@sogides.com)"
Dir=DirGet()
CurrentDate=TimeDate()

Info=WinSysInfo()
ComputerName=ItemExtract(1,Info,@tab)
UserName=w95GetUser(@default)

IP_From=iniReadpvt("MAIN","IP_From","","%Dir%Data.ini")
IP_To=iniReadpvt("MAIN","IP_To","","%Dir%Data.ini")
LogFile=iniReadpvt("MAIN","LogFile","","%Dir%Data.ini")
RetryValue=1 ;Will Retry to reach the destination for this value.


;***************************************************************************
;** 
;** Dialogue Box
;** 
;***************************************************************************

MyDialogFormat=`WWWDLGED,5.0`

MyDialogCaption=Titre
MyDialogX=60
MyDialogY=76
MyDialogWidth=202
MyDialogHeight=137
MyDialogNumControls=8

MyDialog01=`116,104,64,DEFAULT,PUSHBUTTON,DEFAULT,"Cancel",0`
MyDialog02=`20,104,64,DEFAULT,PUSHBUTTON,DEFAULT,"Run",1`
MyDialog03=`20,62,158,DEFAULT,STATICTEXT,DEFAULT,"Log FileName: (LogFile.txt)"`
MyDialog04=`20,26,36,DEFAULT,STATICTEXT,DEFAULT,"From:"`
MyDialog05=`114,24,64,DEFAULT,STATICTEXT,DEFAULT,"To:"`
MyDialog06=`20,38,64,DEFAULT,EDITBOX,IP_From,""`
MyDialog07=`114,36,64,DEFAULT,EDITBOX,IP_TO,""`
MyDialog08=`20,74,158,DEFAULT,EDITBOX,LogFile,"c:\"`

ButtonPushed=Dialog("MyDialog")


iniwritepvt("MAIN","IP_From", IP_From,"%Dir%Data.ini")
iniwritepvt("MAIN","IP_TO", IP_TO,"%Dir%Data.ini")
iniwritepvt("MAIN","LogFile", LogFile,"%Dir%Data.ini")



;***************************************************************************
;** 
;** IP Adress validation
;** 
;***************************************************************************

If StrLen(IP_From) <> 15
Message(Titre,"The ip adress is not good! Try using this format: 192.168.025.010")
Goto Home 
EndIf 

If StrLen(IP_To) <> 15
Message(Titre,"The ip adress is not good! Try using this format: 192.168.025.010")
Goto Home 
EndIf


;***************************************************************************
;** 
;** Data Parsing
;** 
;***************************************************************************

ComputerIP_1a = StrSub(IP_From, 1,12)
ComputerIP_1b = StrSub(IP_From, 13,3)

ComputerIP_2a = StrSub(IP_TO, 1,12)
ComputerIP_2b = StrSub(IP_TO, 13,3)
IPRange = ComputerIP_2b - ComputerIP_1b



;***************************************************************************
;** 
;** Init. log file
;** 
;***************************************************************************

Line0="%@CRLF%%@CRLF%%@CRLF%"
Line1="rem ***************************************************************************************"
Line2="rem *** Current Date: %CurrentDate%"
Line3="rem *** Adding on to batch file by user: %UserName%"
Line4="rem *** From computer: %ComputerName%"
Line5="rem *** IP Scanning Range From:%IP_From% To:%IP_TO%"
Line6="rem ***************************************************************************************%@CRLF%"

fp=FileOpen("%DIR%temp876.num","WRITE")
FileWrite(fp,Line0)
FileWrite(fp,Line1)
FileWrite(fp,Line2) 
FileWrite(fp,Line3)
FileWrite(fp,Line4)
FileWrite(fp,Line5)
FileWrite(fp,Line6)

FileClose(fp)
FileAppend("temp876.num","%DIR%%LogFile%")
FileDelete("temp876.num")



;***************************************************************************
;** 
;** Scanning IP Adress
;** 
;***************************************************************************

For x = ComputerIP_1b to ComputerIP_2b

ComputerIP = StrCat(ComputerIP_1a,x)
Display(1,Titre,"Scanning: %ComputerIP%")

Ping=ipPing(ComputerIP,5)


if Ping == 0

err=ipGetLastErr()
Gosub ErrorID

fp=FileOpen("%DIR%temp876.num","WRITE")
FileWrite(fp,"%ComputerIP%%@TAB%ERROR#1%@TAB%%err%")
FileClose(fp)
FileAppend("temp876.num","%DIR%%LogFile%")
FileDelete("temp876.num")

Ping=ipPing(ComputerIP,5)

EndIf 


if Ping == 0

err=ipGetLastErr()
Gosub ErrorID

fp=FileOpen("%DIR%temp876.num","WRITE")
FileWrite(fp,"%ComputerIP%%@TAB%ERROR#2%@TAB%%err%")
FileClose(fp)
FileAppend("temp876.num","%DIR%%LogFile%")
FileDelete("temp876.num")

Ping=ipPing(ComputerIP,5)

else

host=ipAddr2Host(ComputerIP,5)
if host == "" Then host = "NoName"

fp=FileOpen("%DIR%temp876.num","WRITE")
FileWrite(fp,"%ComputerIP%%@TAB%%host%%@TAB%")
FileClose(fp)
FileAppend("temp876.num","%DIR%%LogFile%")
FileDelete("temp876.num")


EndIf


Next



;***************************************************************************
;** 
;** Writing end of script in log file
;** 
;***************************************************************************


CurrentDate=TimeDate()
Line1="rem ******************************************************************"
Line2="rem *** Date at the end of execution: %CurrentDate%"

fp=FileOpen("%DIR%temp876.num","WRITE")
FileWrite(fp,Line1)
FileWrite(fp,Line2) 
FileClose(fp)
FileAppend("temp876.num","%DIR%%LogFile%")
FileDelete("temp876.num")

exit


;***************************************************************************
;** 
;** Error ID
;** 
;***************************************************************************

:ErrorID

Error = err - 11000

Switch Error
case 1
err="IP_BUF_TOO_SMALL"
break
case 2
err="IP_DEST_NET_UNREACHABLE"
break
case 3
err="IP_DEST_HOST_UNREACHABLE"
break
case 4
err="IP_DEST_PROT_UNREACHABLE"
break
case 5
err="IP_DEST_PORT_UNREACHABLE"
break
case 6
err="IP_NO_RESOURCES"
break
case 7
err="IP_BAD_OPTION"
break
case 8
err="IP_HW_ERROR"
break
case 9
err="IP_PACKET_TOO_BIG"
break
case 10
err="IP_REQ_TIMED_OUT"
break
case 11
err="IP_BAD_REQ"
break
case 12
err="IP_BAD_ROUTE"
break
case 13
err="IP_TTL_EXPIRED_TRANSIT"
break
case 14
err="IP_TTL_EXPIRED_REASSEM"
break
case 15
err="IP_PARAM_PROBLEM"
break
case 16
err="IP_SOURCE_QUENCH"
break
case 17
err="IP_OPTION_TOO_BIG"
break
case 18
err="IP_BAD_DESTINATION"
break

;The next group are status codes passed up on status indications to transport layer protocols.

case 19
err="IP_ADDR_DELETED"
break
case 20
err="IP_SPEC_MTU_CHANGE"
break
case 21
err="IP_MTU_CHANGE"
break
case 22
err="IP_UNLOAD"
break
case 23
err="IP_ADDR_ADDED"
break
case 50
err="IP_GENERAL_FAILURE"
break
case 255
err="IP_PENDING"
break

case response ; default case
err="IP_GENERAL_FAILURE_MAX_IP_STATUS"
break
EndSwitch

return 


Article ID:   W14741
Filename:   Scan a Local Subnet for IP and Log.txt
File Created: 2001:03:13:16:44:28
Last Updated: 2001:03:13:16:44:28