From b85209a4c529945ea5c280b69314b8e351daef48 Mon Sep 17 00:00:00 2001 From: GuanM <1-GuanM@users.noreply.gitlab.54sxh.cn> Date: Wed, 19 Jun 2024 15:59:56 +0800 Subject: [PATCH] =?UTF-8?q?Centos=20=E6=B5=8B=E8=AF=95=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- task/ip.go | 6 +++--- utils/DockerRep.go | 48 ++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/task/ip.go b/task/ip.go index d34a3dc..4d73b68 100644 --- a/task/ip.go +++ b/task/ip.go @@ -189,16 +189,16 @@ func loadIPRanges() []*net.IPAddr { } } else { // 从文件中获取 IP 段数据 if IPFile == "" { - return ToNetAddr() + IPFile = defaultInputFile } file, err := os.Open(IPFile) if err != nil { - log.Fatal(err) + return ToNetAddr() } defer func(file *os.File) { err = file.Close() if err != nil { - + log.Fatal(err) } }(file) scanner := bufio.NewScanner(file) diff --git a/utils/DockerRep.go b/utils/DockerRep.go index e21c90b..2e1799e 100644 --- a/utils/DockerRep.go +++ b/utils/DockerRep.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "os" + "os/exec" "runtime" "strings" ) @@ -16,9 +17,9 @@ var ( func (s DownloadSpeedSet) DockerSet() { // 选择最优的节点 bestIP := s[0].IP - bestSpeed := s[0].DownloadSpeed + bestSpeed := convertToString(s)[0][5] // 自动优选节点 最高速度为 0 时,不进行优选 - if bestSpeed == 0 { + if bestSpeed == "0" { fmt.Println("\n[信息] 未找到最优节点,跳过优选节点。") return } else { @@ -125,7 +126,18 @@ func writeHostsFile(hostsFilePath, bestIP string) error { return nil } +// isDockerInstalled 检查Docker是否安装 +func isDockerInstalled() bool { + cmd := exec.Command("docker", "version") + err := cmd.Run() + return err == nil +} + func SetDockerAccelerator(dockerUrl string) error { + if !isDockerInstalled() { + return fmt.Errorf("docker 未安装") + } + system := runtime.GOOS var err error @@ -144,6 +156,38 @@ func SetDockerAccelerator(dockerUrl string) error { return fmt.Errorf("设置 Docker 加速器失败: %w", err) } fmt.Println("\n[信息] Docker 加速器已设置为:", dockerUrl) + // 询问是否重启 Docker 服务 + fmt.Print("\n[提示] 是否重启 Docker 服务?(y/n): ") + var input string + _, _ = fmt.Scanln(&input) + if strings.ToLower(input) == "y" { + err = RestartDocker() + if err != nil { + return fmt.Errorf("重启 Docker 服务失败: %w", err) + } + } + return nil +} + +func RestartDocker() error { + var cmd *exec.Cmd + switch runtime.GOOS { + case "windows": + cmd = exec.Command("powershell", "Restart-Service", "docker") + case "darwin": + cmd = exec.Command("brew", "services", "restart", "docker") + case "linux": + cmd = exec.Command("sudo", "service", "docker", "restart") + default: + return fmt.Errorf("不支持的操作系统:%s", runtime.GOOS) + } + + err := cmd.Run() + if err != nil { + return fmt.Errorf("重启 Docker 服务失败: %w", err) + } + + fmt.Println("Docker 服务已重启。") return nil }