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