2017-01-24 1 views
0

golang의 SFTP를 통해 내 서버에서 파일을 내보내고 싶습니다.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

'가져 오기'로 가져오고 '넣기'로 업로드합니다. 가져 오는 경우'put '을'get'으로 변경해야합니다. – nohup

+0

대체품으로 생각하십시오 [sftp package] (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() 

내가 cmd.Stdin

cmd.Start()cmd.Wait()을 설정하여 나는 내가 STFP에있어 한 번 할 필요가 명령을 설정 명령을 시작하고 전체 명령이 완료되면 정지합니다.