ZBLOG

root@ght:/usr/local/sbin/etc/udm# cat /boot/ght/backup_nic_config.conf ens3@172.21.33.181/16 ens11@133.133.133.182/24 ens10@10.182.1.2/24,10.182.1.3/24,10.182.1.4/24 ens9@10.182.1.22/24 把这个文件的内容,每一行按照@来区分,取值@之前的为ifName,@之后的按照,来区分 每条记录用/来给 ipAddr,...

你可以使用以下代码来实现对文件内容的处理:

package main

import (
	"bufio"
	"fmt"
	"log"
	"os"
	"strings"

	"github.com/vishvananda/netlink"
)

func main() {
	filePath := "/boot/ght/backup_nic_config.conf"

	file, err := os.Open(filePath)
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)

	for scanner.Scan() {
		line := scanner.Text()
		parts := strings.Split(line, "@")

		if len(parts) != 2 {
			log.Printf("Invalid line: %s", line)
			continue
		}

		ifName := parts[0]
		ipConfigs := strings.Split(parts[1], ",")

		link, err := netlink.LinkByName(ifName)
		if err != nil {
			log.Printf("Failed to get link for interface %s: %v", ifName, err)
			continue
		}

		for _, ipConfig := range ipConfigs {
			ipParts := strings.Split(ipConfig, "/")

			if len(ipParts) != 2 {
				log.Printf("Invalid IP config: %s", ipConfig)
				continue
			}

			ipAddrStr, ipMaskStr := ipParts[0], ipParts[1]

			addr, err := netlink.ParseAddr(ipAddrStr + "/" + ipMaskStr)
			if err != nil {
				log.Printf("Failed to parse IP address: %s/%s - Error: %v", ipAddrStr, ipMaskStr, err)
				continue
			}

			err = netlink.AddrAdd(link, addr)
			if err != nil {
				log.Printf("Failed to add address (%s/%s) to interface (%s): %v", ipAddrStr, ipMaskStr, ifName, err)
				continue
			}

			fmt.Printf("Added address (%s/%s) to interface (%s)\n", ipAddrStr, ipMaskStr, ifName)
		}
	}

	if err := scanner.Err(); err != nil {
		log.Fatal(err)
	}
}

注意,以上代码依赖于 github.com/vishvananda/netlink 包进行网络接口和地址的操作。请确保你已经在项目中导入该包,并且按照你的环境进行相应的配置和编译。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=18458

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?