如何在AutoHotkey中识别IP范围

时间:2012-11-26 20:14:01

标签: if-statement ip autohotkey range

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

以下是示例详细信息:

SourceIP = 15.15.7.49

VPNpool1 = 15.15.1.0 - 15.15.9.255

VPNPool2 = 15.15.10.0 - 15.15.19.255

通常,当我想查看值是否在值列表中时,我使用如果VARIABLE包含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.

}

1 个答案:

答案 0 :(得分: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
}