vbs如何实现myipneighbors域名查询结果整理
发布时间:2023-05-15 19:14:12
在vbs中,我们可以通过使用WinHttp来实现域名的查询和获取。在查询过程中,我们需要获取指定域名的IP地址,并使用ping命令确定其邻近地址。我们可以将结果整理成一个包含IP地址和邻近地址的列表。 下面是实现过程。
Step 1.查询域名的IP地址
我们可以使用WinHttp对象的SetRequestHeader方法,将域名作为参数传递给它,它将返回一个包含IP地址的JSON格式的响应。下面是相关代码:
Dim oWinHttp:Set oWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
oWinHttp.Open "GET", "https://api.ipify.org/?format=json", False
oWinHttp.SetRequestHeader "Content-Type", "application/json"
oWinHttp.Send
Dim sJson:sJson = oWinHttp.ResponseText
Step 2.解析JSON格式的响应
我们使用JavaScriptSerializer对象来解析JSON响应。它将JSON格式的字符串转换为JavaScript对象。下面是解析JSON的相关代码:
Dim oJsonParser:Set oJsonParser = CreateObject("ScriptControl")
oJsonParser.Language = "JScript"
Dim oJsonObj:oJsonObj = oJsonParser.Eval("(" & sJson & ")")
Dim sIP:sIP = oJsonObj.ip
Step 3.确定邻近地址
我们使用ping命令来确定域名的邻近地址。我们可以使用WScript.Shell对象执行ping命令,并捕获ping的响应结果。下面是相关代码:
Dim oShell:Set oShell = CreateObject("WScript.Shell")
Dim oExec:Set oExec = oShell.Exec("ping.exe -n 1 " & sIP)
Do While Not oExec.StdOut.AtEndOfStream
Dim sLine:sLine = oExec.StdOut.ReadLine
If InStr(sLine, "Reply from") > 0 Then
Dim iStart:iStart = InStr(sLine, "Reply from") + Len("Reply from") + 1
Dim iEnd:iEnd = InStr(iStart, sLine, ":")
Dim sNeighbor:sNeighbor = Trim(Mid(sLine, iStart, iEnd - iStart))
'将IP地址和邻近地址添加到列表中
End If
Loop
Step 4.整理结果
我们将IP地址和邻近地址添加到一个列表中,并在列表中返回结果。下面是相关代码:
Dim oResult:oResult = CreateObject("System.Collections.ArrayList")
oResult.Add(sIP & " - " & sNeighbor)
完整代码:
Dim oWinHttp:Set oWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
oWinHttp.Open "GET", "https://api.ipify.org/?format=json", False
oWinHttp.SetRequestHeader "Content-Type", "application/json"
oWinHttp.Send
Dim sJson:sJson = oWinHttp.ResponseText
Dim oJsonParser:Set oJsonParser = CreateObject("ScriptControl")
oJsonParser.Language = "JScript"
Dim oJsonObj:oJsonObj = oJsonParser.Eval("(" & sJson & ")")
Dim sIP:sIP = oJsonObj.ip
Dim oShell:Set oShell = CreateObject("WScript.Shell")
Dim oExec:Set oExec = oShell.Exec("ping.exe -n 1 " & sIP)
Do While Not oExec.StdOut.AtEndOfStream
Dim sLine:sLine = oExec.StdOut.ReadLine
If InStr(sLine, "Reply from") > 0 Then
Dim iStart:iStart = InStr(sLine, "Reply from") + Len("Reply from") + 1
Dim iEnd:iEnd = InStr(iStart, sLine, ":")
Dim sNeighbor:sNeighbor = Trim(Mid(sLine, iStart, iEnd - iStart))
oResult.Add(sIP & " - " & sNeighbor)
End If
Loop
For Each sRes In oResult
WScript.Echo sRes
Next
上述代码将返回包含IP地址和邻近地址的列表,我们可以根据需求对其进一步处理。
