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()))
}
}
Go1.5使用sftp下载文件
最新推荐文章于 2024-06-25 18:18:54 发布