1

我正在使用的脚本有一个名为 SourceIP 的变量。我有一些用于 VPN 池的静态 IP 范围列表。如何设置搜索逻辑以确定源 IP 所在的 IP 池?

以下是示例详细信息:

源 IP = 15.15.7.49

VPNpool1 = 15.15.1.0 - 15.15.9.255

VPNPool2 = 15.15.10.0 - 15.15.19.255

通常,当我想查看一个值是否在值列表中时,我使用If VARIABLE contains ITEM1,ITEM2,ITEMn。此方法不适用于 VPN 池范围,因为我必须列出每个IP。我希望有人知道我如何才能完成这项工作。

也许是这样的:

If SourceIP in VPNPool1 

{

MsgBox The SourceIP is from VPNPool1

}

If SourceIP in VPNPool12

{

MsgBox The SourceIP is from VPNPool2

}

Else 

{

MsgBox The SourceIP is not in a VPNPool.

}
4

1 回答 1

1

尝试这个。确保您拥有支持对象的最新 AutoHotkey 版本。

IP := "15.15.9.254"
Start := "15.15.1.0" 
End := "15.15.9.255"
if InIPRange(IP, Start, End)
    msgbox yes
else
    msgbox no

InIPRange(strIP, strStart, strEnd) {

    arrIPRanges := {}
    loop, parse, strStart, .
        arrIPRanges[A_Index, A_LoopField] := A_LoopField        
    loop, parse, strEnd, .
        arrIPRanges[A_Index, A_LoopField] := A_LoopField
    loop, parse, strIP, .
    {
        if arrIPRanges[A_Index].MinIndex() > A_LoopField
            return false
        if arrIPRanges[A_Index].MaxIndex() < A_LoopField
            return false
    }
    return true
}
于 2012-11-26T21:43:02.757 回答