Golang使用sftp golang库将远程文件复制到本地文件夹

我得到了在远程主机上创建文件的代码:

config := &ssh.ClientConfig{

User: "xx",

HostKeyCallback: nil,

Auth: []ssh.AuthMethod{

ssh.Password("xx"),

},

}

config.SetDefaults()

sshConn, err := ssh.Dial("tcp", "192.xx.1.xx:22", config)

if err != nil {

panic(err)

}

defer sshConn.Close()

client, err := sftp.NewClient(sshConn)

if err != nil {

panic(err)

}

defer client.Close()

file, err := client.Create("/www/hello9.txt")

if err != nil {

panic(err)

}

defer file.Close()

if _, err := file.Write([]byte("Hello world")); err != nil {

log.Fatal(err)

}

但是需要将文件从远程主机复制到本地主机。我怎样才能做到这一点使用golang工具 **github.com/pkg/sftp 只?

回答:

您可以使用sftp包中的Open(path string)WriteTo(w

io.Writer)方法来完成此操作(当然,您需要os.File或类似的东西来写入)。

client, err := ssh.Dial("tcp", "192.x.x.x:22", sshConfig)

if err != nil {

panic("Failed to dial: " + err.Error())

}

fmt.Println("Successfully connected to ssh server.")

// open an SFTP session over an existing ssh connection.

sftp, err := sftp.NewClient(client)

if err != nil {

log.Fatal(err)

}

defer sftp.Close()

srcPath := "/tmp/"

dstPath := "C:/temp/"

filename := "test.txt"

// Open the source file

srcFile, err := sftp.Open(srcPath + filename)

if err != nil {

log.Fatal(err)

}

defer srcFile.Close()

// Create the destination file

dstFile, err := os.Create(dstPath + filename)

if err != nil {

log.Fatal(err)

}

defer dstFile.Close()

// Copy the file

srcFile.WriteTo(dstFile)

以上是 Golang使用sftp golang库将远程文件复制到本地文件夹 的全部内容, 来源链接: utcz.com/qa/427742.html

回到顶部