45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
//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("验证完成")
|
|
}
|