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())) } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/fyxichen/article/details/47977877