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和golang.org/x/crypto/ssh只?


开心每一天1111
浏览 482回答 1
1回答

潇湘沐

您可以使用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 filesrcFile, err := sftp.Open(srcPath + filename)if err != nil {    log.Fatal(err)}defer srcFile.Close()// Create the destination filedstFile, err := os.Create(dstPath + filename)if err != nil {    log.Fatal(err)}defer dstFile.Close()// Copy the filesrcFile.WriteTo(dstFile)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go