使用sftp<< INPUT通过golang os / exec

时间:2017-01-24 16:49:35

标签: go

我想要做的是在golang中通过SFTP从我的服务器导出文件。

这是令人不安的代码

cmd = exec.Command("sftp", "login@sftp.com", `INPUT
    cd /some/path
    put file.gz
    quit
    INPUT`)
cmd.Stderr = &stderr
err = cmd.Run()
if err != nil {
    fmt.Println(stderr.String())
    os.Exit(1)
}
fmt.Println("done")

它到达done但不会导入file.gz

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案。

cmd = exec.Command("sftp", "login@sftp.com")
cmd.Stdin = strings.NewReader(`cd some/path
put file.gz
quit`)
cmd.Stderr = &stderr
err = cmd.Start()
if err != nil {
    fmt.Println(stderr.String())
    fmt.Println(err)
    os.Exit(1)
}
err = cmd.Wait()

我通过设置cmd.Stdin

设置了我在STFP后需要执行的命令

cmd.Start()cmd.Wait()启动命令并在整个命令完成后停止。