Go1.5使用sftp下载文件
2015-08-25 15:30
501 查看
package tools import ( "fmt" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/agent" "io" "net" "os" "sftp" ) func ftp(user, password, ip, port string, file_list []string) { var auths []ssh.AuthMethod if aconn, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK")); err == nil { auths = append(auths, ssh.PublicKeysCallback(agent.NewClient(aconn).Signers)) } auths = append(auths, ssh.Password(password)) config := ssh.ClientConfig{ User: user, Auth: auths, } addr := fmt.Sprintf("%s:%s", ip, port) conn, err := ssh.Dial("tcp", addr, &config) if err != nil { fmt.Println(err) return } defer conn.Close() c, err := sftp.NewClient(conn, sftp.MaxPacket(5e9)) if err != nil { fmt.Println(err) return } for _, k := range file_list { fs, err := c.Open(filename) //逻辑自己写 if err != nil { fmt.Println(err) continue } info, _ := fs.Stat() File, _ := os.OpenFile(k, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) io.Copy(File, io.LimitReader(fs, info.Size())) } }
相关文章推荐
- Go 语言 Channel 实现原理精要
- Go语言将支持Android
- Golang实现的聊天程序服务端和客户端代码分享
- Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结
- GO语言异常处理机制panic和recover分析
- go语言执行windows下命令行的方法
- Go语言计算两个经度和纬度之间距离的方法
- Go语言排序与接口实例分析
- Go语言导出内容到Excel的方法
- go语言实现sqrt的方法
- Go语言MessageBox用法实例
- Go语言判断指定文件是否存在的方法
- go语言制作的zip压缩程序
- go语言channel实现多核并行化运行的方法
- Go语言MD5加密用法实例
- go语言使用scp的方法实例分析
- Go语言中的switch用法实例分析
- Golang学习笔记(三):控制流
- go语言检测文件是否存在的方法
- Go语言里的结构体文法实例分析