2017-01-24 9 views
0

私がしたいのは、サーバからSFTP経由でgolangにファイルをエクスポートすることです。sftpの使用<< INPUT via golang os/exec

は、ここでそれはdoneになりますが、file.gzをインポートしていない厄介なコード

cmd = exec.Command("sftp", "[email protected]", `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") 

です。

+0

'get'でインポートし、' put'でアップロードします。インポートの場合は、 'put'を' get'に変更する必要があります。 – nohup

+0

これに代わる[sftpパッケージ](https://godoc.org/github.com/pkg/sftp) – Mark

答えて

1

最後に解決策が見つかりました。

cmd = exec.Command("sftp", "[email protected]") 
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() 

私は私がSTFPにいたらcmd.Stdin

cmd.Start()cmd.Wait()コマンドを起動し、コマンド全体が行われたときに停止を設定することによって行うために必要なコマンドを設定します。

関連する問題