Files
netcli/cmd/static.go

65 lines
1.4 KiB
Go

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)
}