remote_test.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package remote
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io"
  6. "os"
  7. "testing"
  8. "xg_auto_deploy/internal/models"
  9. "golang.org/x/crypto/ssh"
  10. )
  11. var GlobalServerNodeConfigTest = models.ServerNodeConfig{
  12. ServerNodeInfo: &models.ServerNodeInfo{
  13. IpPort: "172.23.6.92:22",
  14. LocalFile: `C:\Program_GT\Code\Go\Work\xg_autodeploy\file`,
  15. TargetFile: "/home/gtong/testf/",
  16. User: "your_user",
  17. Password: "your_password",
  18. XuguAddr: "your_xugu_addr",
  19. },
  20. SSHInfo: &models.SSHInfo{
  21. SSHClient: &ssh.ClientConfig{
  22. User: "gtong",
  23. Auth: []ssh.AuthMethod{
  24. ssh.Password("845895"),
  25. },
  26. // 设置其他字段
  27. HostKeyCallback: ssh.InsecureIgnoreHostKey(), // 不验证远程主机的身份,仅用于示例,请不要在生产环境中使用
  28. },
  29. },
  30. AppInfo: &models.AppInfo{
  31. Gcc: "your_gcc",
  32. Libaio: "your_libaio",
  33. Snmpd: "your_snmpd",
  34. Ntpd: "your_ntpd",
  35. },
  36. }
  37. func TestUploadFile(t *testing.T) {
  38. file, err := os.Open(`C:\Program_GT\Code\Go\Work\xg_autodeploy\file\config.toml`)
  39. if err != nil {
  40. fmt.Println("Error opening file:", err)
  41. return
  42. }
  43. defer file.Close() // 确保在函数退出时关闭文件
  44. var buf bytes.Buffer
  45. // 将文件内容复制到 buf 中
  46. _, err = io.Copy(&buf, file)
  47. if err != nil {
  48. fmt.Println("Error reading file:", err)
  49. return
  50. }
  51. UploadFileBuffer(&GlobalServerNodeConfigTest, &buf, "/home/gtong/testf/")
  52. }
  53. func TestUploadFiles(t *testing.T) {
  54. // 连接到远程主机
  55. client, err := ssh.Dial("tcp", "172.23.6.92:22", GlobalServerNodeConfigTest.SSHInfo.SSHClient)
  56. if err != nil {
  57. panic(err)
  58. }
  59. defer client.Close()
  60. SingleCmd(&GlobalServerNodeConfigTest, fmt.Sprintf(`[ ! -d "%s" ] && mkdir -p %s`, GlobalServerNodeConfigTest.TargetFile, GlobalServerNodeConfigTest.TargetFile))
  61. // 递归上传文件夹内容
  62. if err := UploadDir(&GlobalServerNodeConfigTest, GlobalServerNodeConfigTest.LocalFile, GlobalServerNodeConfigTest.TargetFile); err != nil {
  63. panic(err)
  64. }
  65. }