49 lines
968 B
Go
49 lines
968 B
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
|
|
"netcli/internal/constants"
|
|
netmod "netcli/internal/net"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
// dhcpCmd represents the dhcp command
|
|
var dhcpCmd = &cobra.Command{
|
|
Use: "dhcp",
|
|
Short: "将指定网卡改为 DHCP 自动获取 IP",
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
// 检查管理员权限
|
|
if !netmod.IsAdmin() {
|
|
fmt.Println("程序需要管理员权限,尝试提升...")
|
|
return netmod.RunAsAdmin()
|
|
}
|
|
|
|
// 获取所有网卡
|
|
ifaces, err := net.Interfaces()
|
|
if err != nil {
|
|
return fmt.Errorf("获取网卡失败: %w", err)
|
|
}
|
|
|
|
// 用户选择网卡
|
|
nic, err := netmod.ChooseNic(ifaces, constants.DefaultDHCPMsg)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// 执行 netsh 命令设置 DHCP
|
|
if err := netmod.SetDHCP(nic); err != nil {
|
|
return err
|
|
}
|
|
|
|
fmt.Printf("网卡 %s 已设置为 DHCP 自动获取 IP\n", nic.Name)
|
|
return nil
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(dhcpCmd)
|
|
}
|