Skip to content

v-mars/iprange

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IP Range 工具

IP Range 是一个用于生成和遍历 IP 地址范围的 Go 语言工具。它支持多种 IP 地址格式,包括 IPv4 和 IPv6,可以方便地生成指定范围内的所有 IP 地址。

功能特性

  • 支持 IPv4 和 IPv6 地址
  • 支持多种 IP 地址格式:
    • CIDR 格式 (如: 192.168.1.0/24)
    • 宽范围格式 (如: 192.168.1.1-192.168.1.10)
    • 窄范围格式 (如: 192.168.1-2.1-254)
    • 子网掩码格式 (如: 192.168.1.0/255.255.255.0)
  • 支持从命令行参数、文件或标准输入读取 IP 地址范围
  • 支持逗号分隔的多个 IP 地址范围

安装

确保您已经安装了 Go 语言环境,然后可以通过以下方式构建项目:

go build -o iprange cmd/main.go

使用方法

命令行使用

# 基本用法
./iprange ipStr [ipStr/file] ...

# 示例
./iprange 192.168.1.0/24
./iprange 192.168.1.1-192.168.1.10
./iprange 192.168.1-2.1
./iprange 192.168.1.0/255.255.255.0

支持的 IP 格式

  1. 单个 IP 地址:

    1.1.1.1
    
  2. CIDR 格式:

    1.1.1.1/30
    2001::59:63/120
    
  3. 范围格式:

    1.1.1.1-2
    1.1.1-2.0-1
    2001::59:63-89
    
  4. 子网掩码格式:

    192.168.1.0/255.255.255.0
    

多参数和文件支持

支持通过多个命令行参数、文件或标准输入传递 IP 地址范围:

# 多个参数
./iprange 192.168.1.0/24 10.0.0.1-10.0.0.5

# 文件输入
echo "192.168.1.0/24" > ips.txt
./iprange ips.txt

# 标准输入
echo "192.168.1.0/24" | ./iprange

# 逗号分隔
./iprange 192.168.1.0/24,10.0.0.1-10.0.0.5

API 使用

除了命令行工具,您还可以在 Go 程序中使用该库:

package main

import (
    "fmt"
    "github.com/v-mars/iprange"
)

func main() {
    // 创建 IP 迭代器
    it, startIp, err := iprange.NewIter("192.168.1.0/24")
    if err != nil {
        // 处理错误
        fmt.Printf("Error: %v\n", err)
        return
    }

    // 遍历所有 IP
    for nit := startIp; it.HasNext(); nit = it.Next() {
        fmt.Println(nit)
    }
}

主要方法

  1. NewIter(ipStr string) (it *Iter, startIp net.IP, err error)

    • 创建一个新的 IP 迭代器
    • 参数: IP 字符串
    • 返回: 迭代器、起始 IP 和错误信息
  2. it.HasNext() bool

    • 检查是否还有下一个 IP 地址
  3. it.Next() net.IP

    • 获取下一个 IP 地址

支持的模式

  1. CIDR 模式 - CIDR 格式的网络地址 (如 192.168.0.1/24)
  2. 宽范围模式 - 明确的起止 IP 地址 (如 1.1.1.1-1.1.2.3)
  3. 窄范围模式 - 每个字段中使用范围表示 (如 1.1.1-2.0-1)
  4. 子网掩码模式 - 使用子网掩码表示的网络 (如 192.168.0.1/255.255.255.0)

示例

# 生成 CIDR 范围内的所有 IP
./iprange 192.168.1.0/30
# 输出:
# 192.168.1.0
# 192.168.1.1
# 192.168.1.2
# 192.168.1.3

# 生成范围格式的所有 IP
./iprange 192.168.1.1-192.168.1.3
# 输出:
# 192.168.1.1
# 192.168.1.2
# 192.168.1.3

# 生成窄范围格式的所有 IP
./iprange 192.168.1-2.1
# 输出:
# 192.168.1.1
# 192.168.2.1

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages