英文:
Using sftp << INPUT via golang os/exec
问题
我想做的是通过SFTP从我的服务器导出一个文件,使用的是golang语言。
以下是有问题的代码:
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"。
英文:
What I want to do is exporting a file from my server via SFTP, in golang.
Here is the troubling code
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")
It gets to done
but doesn't import file.gz
.
答案1
得分: 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()
分别启动命令并在整个命令完成后停止。
英文:
I finally found the solution.
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()
I set the commands I need to do once I'm in the STFP by setting cmd.Stdin
cmd.Start()
and cmd.Wait()
starts the command and stops when the whole command is done.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论