//go:build ignore // 临时验证程序:验证 镜像上传 + docker load 分发链路(用完即删) package main import ( "fmt" "os" "strings" "time" "auto-check/pkg/sshclient" ) func main() { ip := os.Args[1] cfg := sshclient.NewConfig("admin", "admin123", "", 22, 10*time.Second) cli, err := sshclient.Connect(ip, cfg) if err != nil { fmt.Println("SSH 连接失败:", err) os.Exit(1) } defer cli.Close() sshclient.EnsureHome(cli) v, _ := sshclient.RunCommand(cli, "echo 'admin123' | sudo -S -- docker version --format '{{.Server.Version}}' 2>/dev/null") fmt.Printf("Docker 版本: %q\n", strings.TrimSpace(v)) exists, _ := sshclient.RunCommand(cli, "echo 'admin123' | sudo -S -- docker images stress-test:latest --format '{{.Repository}}:{{.Tag}}' 2>/dev/null") fmt.Printf("镜像状态: %q\n", strings.TrimSpace(exists)) if strings.TrimSpace(exists) == "" { if err := sshclient.UploadFile(cli, "docker/stress-test/stress-test.tar", "/tmp/auto-check-image.tar"); err != nil { fmt.Println("上传失败:", err) os.Exit(1) } out, err := sshclient.RunCommand(cli, "echo 'admin123' | sudo -S -- docker load -i /tmp/auto-check-image.tar 2>&1") sshclient.RunCommand(cli, "rm -f /tmp/auto-check-image.tar") fmt.Printf("load 输出: %s (err=%v)\n", out, err) exists, _ = sshclient.RunCommand(cli, "echo 'admin123' | sudo -S -- docker images stress-test:latest --format '{{.Repository}}:{{.Tag}}' 2>/dev/null") fmt.Printf("load 后镜像状态: %q\n", strings.TrimSpace(exists)) } fmt.Println("验证完成") }