您的位置:首页 > 编程语言 > Go语言

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语言 golang golang1.5