mirror of
https://github.com/sairson/Yasso.git
synced 2026-02-06 20:14:09 +08:00
43 lines
1.0 KiB
Go
43 lines
1.0 KiB
Go
package example
|
||
|
||
import (
|
||
"fmt"
|
||
"net"
|
||
"strings"
|
||
"testing"
|
||
)
|
||
|
||
func Test(t *testing.T) {
|
||
inters, err := net.Interfaces()
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
for _, inter := range inters {
|
||
// 判断网卡是否开启,过滤本地环回接口
|
||
if inter.Flags&net.FlagUp != 0 && !strings.HasPrefix(inter.Name, "lo") {
|
||
// 获取网卡下所有的地址
|
||
addrs, err := inter.Addrs()
|
||
if err != nil {
|
||
continue
|
||
}
|
||
for _, addr := range addrs {
|
||
if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
|
||
//判断是否存在IPV4 IP 如果没有过滤
|
||
if strings.ContainsAny(ipnet.String(), ":") {
|
||
continue
|
||
} else {
|
||
//fmt.Println(ipnet)
|
||
minIp, maxIp := getCidrIpRange(ipnet.String())
|
||
fmt.Println("CIDR最小IP:", minIp, " CIDR最大IP:", maxIp)
|
||
mask, _ := ipnet.Mask.Size()
|
||
fmt.Println("掩码:", getCidrIpMask(mask))
|
||
fmt.Println("主机数量", getCidrHostNum(mask))
|
||
fmt.Println("==============================")
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return
|
||
}
|