示例#1
0
func main() {
	var err error
	var ftp *goftp.FTP
	if !handleArgs() {
		panic("Usage: ./logdl <host> <user> <password> <directory>")
	}
	args := os.Args[1:]
	host := args[0]
	user := args[1]
	pass := args[2]
	dir := golib.GetFinalArgs(args, 3)

	if ftp, err = goftp.Connect(host + ":21"); err != nil {
		panic(err)
	}
	defer ftp.Close()
	if err = ftp.Login(user, pass); err != nil {
		panic(err)
	}
	if err = ftp.Cwd(dir); err != nil {
		panic(err)
	}
	var curpath string
	if curpath, err = ftp.Pwd(); err != nil {
		panic(err)
	}

	downloadDirectory(curpath, ftp)
}
示例#2
0
文件: ftp.go 项目: kpawlik/exportms
func (f *FTP) SendFile(remoteDir, remoteFile, localFile string) (err error) {
	var (
		file *os.File
		ftp  *goftp.FTP
	)
	if ftp, err = goftp.Connect(f.host); err != nil {
		return
	}
	defer ftp.Close()
	if err = ftp.Login(f.user, f.pass); err != nil {
		return
	}
	if file, err = os.Open(localFile); err != nil {
		return
	}
	defer file.Close()
	if f.testMode {
		return
	}
	if err = ftp.Mkd(remoteDir); err != nil {
		return
	}
	if err = ftp.Cwd(remoteDir); err != nil {
		return
	}
	ftp.Stor(remoteFile, file)

	return
}
示例#3
0
func downloadDirectory(directory string, ftp *goftp.FTP) {
	var files []string
	var err error
	if files, err = ftp.List(""); err != nil {
		panic(err)
	}
	directory = strings.Replace(directory, "\r\n", "", -1)

	for f := range files {
		filename := strings.Split(files[f], "; ")
		newPath := directory + "/" + filename[1]
		if !strings.Contains(filename[0], "type=dir;") {
			downloadFile(newPath, ftp)
		} else {
			ftp.Cwd(newPath)
			downloadDirectory(newPath, ftp)
		}
	}
}
示例#4
0
func main() {
	var err error
	var ftp *goftp.FTP

	// For debug messages: goftp.ConnectDbg("ftp.server.com:21")
	if ftp, err = goftp.Connect("172.8.4.101:21"); err != nil {
		panic(err)
	}

	defer ftp.Close()

//	config := tls.Config{
//		InsecureSkipVerify: true,
//		ClientAuth:         tls.RequestClientCert,
//	}
//
//	if err = ftp.AuthTLS(config); err != nil {
//		panic(err)
//	}

	if err = ftp.Login("bob", "p@ssw0rd"); err != nil {
		panic(err)
	}

	if err = ftp.Cwd("/home/bob"); err != nil {
		panic(err)
	}

	var curpath string
	if curpath, err = ftp.Pwd(); err != nil {
		panic(err)
	}

	fmt.Printf("Current path: %s\n", curpath)

	var files []string
	if files, err = ftp.List(""); err != nil {
		panic(err)
	}

	fmt.Println(files)

//	var file *os.File
//	if file, err = os.Open("/tmp/test.txt"); err != nil {
//		panic(err)
//	}
//
//	if err := ftp.Stor("/test.txt", file); err != nil {
//		panic(err)
//	}

	err = ftp.Walk("/home/bob", func(path string, info os.FileMode, err error) error {
		_, err = ftp.Retr(path, func(r io.Reader) error {
			var hasher = sha256.New()
			if _, err = io.Copy(hasher, r); err != nil {
				return err
			}

			hash := fmt.Sprintf("%s %x", path, sha256.Sum256(nil))
			fmt.Println(hash)

			return err
		})

		return nil
	})

	fmt.Println(err)
}