package remote import ( "bytes" "fmt" "io" "os" "testing" "xg_auto_deploy/internal/models" "golang.org/x/crypto/ssh" ) var GlobalServerNodeConfigTest = models.ServerNodeConfig{ ServerNodeInfo: &models.ServerNodeInfo{ IpPort: "172.23.6.92:22", LocalFile: `C:\Program_GT\Code\Go\Work\xg_autodeploy\file`, TargetFile: "/home/gtong/testf/", User: "your_user", Password: "your_password", XuguAddr: "your_xugu_addr", }, SSHInfo: &models.SSHInfo{ SSHClient: &ssh.ClientConfig{ User: "gtong", Auth: []ssh.AuthMethod{ ssh.Password("845895"), }, // 设置其他字段 HostKeyCallback: ssh.InsecureIgnoreHostKey(), // 不验证远程主机的身份,仅用于示例,请不要在生产环境中使用 }, }, AppInfo: &models.AppInfo{ Gcc: "your_gcc", Libaio: "your_libaio", Snmpd: "your_snmpd", Ntpd: "your_ntpd", }, } func TestUploadFile(t *testing.T) { file, err := os.Open(`C:\Program_GT\Code\Go\Work\xg_autodeploy\file\config.toml`) if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() // 确保在函数退出时关闭文件 var buf bytes.Buffer // 将文件内容复制到 buf 中 _, err = io.Copy(&buf, file) if err != nil { fmt.Println("Error reading file:", err) return } UploadFileBuffer(&GlobalServerNodeConfigTest, &buf, "/home/gtong/testf/") } func TestUploadFiles(t *testing.T) { // 连接到远程主机 client, err := ssh.Dial("tcp", "172.23.6.92:22", GlobalServerNodeConfigTest.SSHInfo.SSHClient) if err != nil { panic(err) } defer client.Close() SingleCmd(&GlobalServerNodeConfigTest, fmt.Sprintf(`[ ! -d "%s" ] && mkdir -p %s`, GlobalServerNodeConfigTest.TargetFile, GlobalServerNodeConfigTest.TargetFile)) // 递归上传文件夹内容 if err := UploadDir(&GlobalServerNodeConfigTest, GlobalServerNodeConfigTest.LocalFile, GlobalServerNodeConfigTest.TargetFile); err != nil { panic(err) } }