package cmd import ( "fmt" stdnet "net" "netcli/config" "netcli/internal/constants" "netcli/internal/model" netmod "netcli/internal/net" "github.com/AlecAivazis/survey/v2" "github.com/spf13/cobra" ) var staticCmd = &cobra.Command{ Use: "static", Short: "设置静态IP", RunE: func(cmd *cobra.Command, args []string) error { // 管理员权限检查 if !netmod.IsAdmin() { fmt.Println("程序需要管理员权限,尝试提升...") return netmod.RunAsAdmin() } // 获取本机网卡 ifaces, _ := stdnet.Interfaces() nic, _ := netmod.ChooseNic(ifaces, constants.DefaultStaticMsg) // 加载配置文件 cfg := config.LoadDefaultConfig() rooms := cfg.ClassRooms if len(rooms) == 0 { rooms = config.DefaultConfig().ClassRooms } // 用户选择教室 var roomNames []string for _, r := range rooms { roomNames = append(roomNames, r.Name) } var choice string survey.AskOne(&survey.Select{Message: "请选择教室:", Options: roomNames}, &choice) var room model.ClassRoom for _, r := range rooms { if r.Name == choice { room = r break } } fmt.Printf("正在设置静态IP...\n网卡: %s\nIP: %s\nMask: %s\nGateway: %s\n", nic.Name, room.Addr, room.Mask, room.Gateway) return netmod.SetStaticIP(nic, room.Addr, room.Mask, room.Gateway) }, } func init() { rootCmd.AddCommand(staticCmd) }