golang で SFTP でファイルを転送する
こんにちは。おなかがいっぱい、きたけーす。
いつまで、このネタひっぱるねんっていうかんじですが、昨日のエントリ(http://kitak.hatenablog.jp/entry/2014/10/20/055049)に続いて、今度はURLの猫ちゃん画像をSFTPで転送してみる。
こんなかんじ。
package main import ( "code.google.com/p/go.crypto/ssh" "github.com/pkg/sftp" "io/ioutil" "net/http" ) func main() { var url string = "http://placekitten.com/g/640/340" response, err := http.Get(url) if err != nil { panic(err) } defer response.Body.Close() body, err := ioutil.ReadAll(response.Body) if err != nil { panic(err) } config := &ssh.ClientConfig{ User: "kitak", HostKeyCallback: nil, Auth: []ssh.AuthMethod{ ssh.Password("PASSWORD"), }, } config.SetDefaults() sshConn, err := ssh.Dial("tcp", "example.com:22", config) if err != nil { panic(err) } defer sshConn.Close() client, err := sftp.NewClient(sshConn) if err != nil { panic(err) } defer client.Close() file, err := client.Create("/tmp/save.jpg") if err != nil { panic(err) } defer file.Close() _, err = file.Write(body) if err != nil { panic(err) } }
今回はパスワード認証をつかったけど、ClientConfigのAuthプロパティで公開鍵認証の指定もできる。