客户临时要求传一个大压缩包给我们,说让开一个ftp服务,同事有的说把windows2012的ftp服务打开就行了,有点说在网上找一个ftp服务的软件就行了,就在他们争论不休之时,我悄悄的祭出golang大法:
import (
"flag"
"log"
filedriver "github.com/goftp/file-driver"
"github.com/goftp/server"
)
func main() {
var (
root = flag.String("root", "d:/tools", "Root directory to serve")
user = flag.String("user", "admin", "Username for login")
pass = flag.String("pass", "123456", "Password for login")
port = flag.Int("port", 21, "Port")
host = flag.String("host", "", "Host")
)
flag.Parse()
if *root == "" {
log.Fatalf("Please set a root to serve with -root")
}
factory := &filedriver.FileDriverFactory{
RootPath: *root,
Perm: server.NewSimplePerm("user", "group"),
}
opts := &server.ServerOpts{
Factory: factory,
Port: *port,
Hostname: *host,
Auth: &server.SimpleAuth{Name: *user, Password: *pass},
}
log.Printf("Starting ftp server on %v:%v", opts.Hostname, opts.Port)
log.Printf("Username %v, Password %v", *user, *pass)
server := server.NewServer(opts)
err := server.ListenAndServe()
if err != nil {
log.Fatal("Error starting server:", err)
}
}
编译:go build -o ftpserver.exe
在服务器上运行:ftpserver.exe -root d:/tools -user admin -pass admin
让网络的同事加上鉴权配好映射,问题解决!
众同事皆默然......
果然golang大法好!