你可以使用以下代码来实现对文件内容的处理:
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助手提供,问题来源于学员提问




