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