代码拉取完成,页面将自动刷新
package iface
import (
"log"
"net"
"strings"
"gitee.com/carlmax_my/console-core-go/pkg/net/ip_util"
"github.com/pkg/errors"
)
// lo, eth
func FindIfaceByIp(ipaddr string) (ifaceName string, err error) {
ifaces, err := net.Interfaces()
if err != nil {
return "", errors.Wrapf(err, "FindIfaceByIp[%s] err", ipaddr)
}
if len(ifaces) == 0 {
return "", nil
}
for _, iface := range ifaces {
if iface.Flags&net.FlagLoopback != 0 {
continue
}
if iface.Flags&net.FlagUp == 0 {
continue
}
addrs, err := iface.Addrs()
if err != nil {
log.Println("iface.Addrs err", err.Error())
}
if ip_util.IsIpInAddrs(addrs, ipaddr) {
return iface.Name, nil
}
}
return "", nil
}
func GetIfacesNameByPrefix(prefix string) ([]string, error) {
ifaces, err := net.Interfaces()
if err != nil {
return nil, errors.Wrapf(err, "GetIfacesNameByPrefix(%s) error", prefix)
}
if len(ifaces) == 0 {
return nil, nil
}
ret := []string{}
for _, i := range ifaces {
if strings.HasPrefix(i.Name, prefix) {
ret = append(ret, i.Name)
}
}
return ret, nil
}
// net.InterfaceByName(), err 会有 "no such network interface"
// if strings.Contains(err.Error(), "no such network interface") {
func FindIface(iface string) (*net.Interface, error) {
list, err := net.Interfaces()
if err != nil {
return nil, errors.Wrapf(err, "FindIface(%s) error", iface)
}
if len(list) == 0 {
return nil, nil
}
for _, v := range list {
if v.Name == iface {
return &v, nil
}
}
return nil, nil
}
func IsIfaceExist(iface string) (bool, error) {
i, err := FindIface(iface)
if err != nil {
return false, err
}
return i != nil, nil
}
func IsIfaceUp(iface string) (bool, error) {
ifaceObj, err := FindIface(iface)
if err != nil {
return false, err
}
if ifaceObj == nil {
return false, nil
}
up := ifaceObj.Flags & net.FlagUp
return up != 0, nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。