123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package remote
- import (
- "bytes"
- "io"
- "xg_auto_deploy/internal/global"
- "xg_auto_deploy/internal/models"
- "github.com/pkg/sftp"
- "golang.org/x/crypto/ssh"
- )
- func DownloadFileBuffer(nodeConfig *models.ServerNodeConfig, targetFile string) *bytes.Buffer {
-
- client, err := ssh.Dial("tcp", nodeConfig.IpPort, nodeConfig.SSHClient)
- if err != nil {
- global.Logs.Fatal("DownloadFailed to dial: ", err)
- }
- defer client.Close()
-
- sftpClient, err := sftp.NewClient(client)
- if err != nil {
- global.Logs.Fatal("Download Failed to init sftp client: ", err)
- }
- defer sftpClient.Close()
-
-
- source, err := sftpClient.Open(targetFile)
- if err != nil {
- global.Logs.Fatal("Download Failed to open remote file: ", err)
- }
- defer source.Close()
-
- buf := new(bytes.Buffer)
- _, err = io.Copy(buf, source)
- if err != nil {
- global.Logs.Fatal("Download Failed to read file: ", err)
- }
-
- return buf
- }
|