成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > go語言實現(xiàn)sftp包上傳文件和文件夾到遠程服務(wù)器操作

go語言實現(xiàn)sftp包上傳文件和文件夾到遠程服務(wù)器操作

熱門標(biāo)簽:400開頭電話怎樣申請 利用地圖標(biāo)注位置 貴州電話智能外呼系統(tǒng) 江蘇呼叫中心外呼系統(tǒng)有效果嗎 官渡電銷外呼管理系統(tǒng)怎么收費 赤峰電銷 谷歌美發(fā)店地圖標(biāo)注 杭州人工智能電銷機器人費用 地圖區(qū)域圖標(biāo)注后導(dǎo)出

使用go語言的第三方包:github.com/pkg/sftp和golang.org/x/crypto/ssh實現(xiàn)文件和文件夾傳輸。

1、創(chuàng)建connect方法:

func connect(user, password, host string, port int) (*sftp.Client, error) {
 var (
  auth   []ssh.AuthMethod
  addr   string
  clientConfig *ssh.ClientConfig
  sshClient *ssh.Client
  sftpClient *sftp.Client
  err   error
 )
 // get auth method
 auth = make([]ssh.AuthMethod, 0)
 auth = append(auth, ssh.Password(password))
 clientConfig = ssh.ClientConfig{
  User:   user,
  Auth:   auth,
  Timeout:   30 * time.Second,
  HostKeyCallback: ssh.InsecureIgnoreHostKey(), //ssh.FixedHostKey(hostKey),
 }
 // connet to ssh
 addr = fmt.Sprintf("%s:%d", host, port)
 if sshClient, err = ssh.Dial("tcp", addr, clientConfig); err != nil {
  return nil, err
 }
 // create sftp client
 if sftpClient, err = sftp.NewClient(sshClient); err != nil {
  return nil, err
 }
 return sftpClient, nil
}

2、上傳文件

func uploadFile(sftpClient *sftp.Client, localFilePath string, remotePath string) {
 srcFile, err := os.Open(localFilePath)
 if err != nil {
  fmt.Println("os.Open error : ", localFilePath)
  log.Fatal(err)
 }
 defer srcFile.Close()
 var remoteFileName = path.Base(localFilePath)
 dstFile, err := sftpClient.Create(path.Join(remotePath, remoteFileName))
 if err != nil {
  fmt.Println("sftpClient.Create error : ", path.Join(remotePath, remoteFileName))
  log.Fatal(err)
 }
 defer dstFile.Close()
 ff, err := ioutil.ReadAll(srcFile)
 if err != nil {
  fmt.Println("ReadAll error : ", localFilePath)
  log.Fatal(err)
 }
 dstFile.Write(ff)
 fmt.Println(localFilePath + " copy file to remote server finished!")
}

3、上傳文件夾

func uploadDirectory(sftpClient *sftp.Client, localPath string, remotePath string) {
 localFiles, err := ioutil.ReadDir(localPath)
 if err != nil {
  log.Fatal("read dir list fail ", err)
 }
 for _, backupDir := range localFiles {
  localFilePath := path.Join(localPath, backupDir.Name())
  remoteFilePath := path.Join(remotePath, backupDir.Name())
  if backupDir.IsDir() {
   sftpClient.Mkdir(remoteFilePath)
   uploadDirectory(sftpClient, localFilePath, remoteFilePath)
  } else {
   uploadFile(sftpClient, path.Join(localPath, backupDir.Name()), remotePath)
  }
 }
 fmt.Println(localPath + " copy directory to remote server finished!")
}

4、上傳測試

func DoBackup(host string, port int, userName string, password string, localPath string, remotePath string) {
 var (
  err  error
  sftpClient *sftp.Client
 )
 start := time.Now()
 sftpClient, err = connect(userName, password, host, port)
 if err != nil {
  log.Fatal(err)
 }
 defer sftpClient.Close()
 _, errStat := sftpClient.Stat(remotePath)
 if errStat != nil {
  log.Fatal(remotePath + " remote path not exists!")
 }
 backupDirs, err := ioutil.ReadDir(localPath)
 if err != nil {
  log.Fatal(localPath + " local path not exists!")
 }
 uploadDirectory(sftpClient, localPath, remotePath)
 elapsed := time.Since(start)
 fmt.Println("elapsed time : ", elapsed)
}

補充:go實現(xiàn)ssh遠程機器并傳輸文件

核心依賴包:

golang.org/x/crypto/ssh

github.com/pkg/sftp

其中g(shù)olang.org/x/crypto/ssh 可從github上下載,

下載地址:https://github.com/golang/crypto

ssh連接源碼(這里是根據(jù)秘鑰連接):

var keypath = "key/id_rsa"
//獲取秘鑰
func publicKey(path string) ssh.AuthMethod {
 keypath, err := homedir.Expand(path)
 if err != nil {
 fmt.Println("獲取秘鑰路徑失敗", err)
 }
 key, err1 := ioutil.ReadFile(keypath)
 if err1 != nil {
 fmt.Println("讀取秘鑰失敗", err1)
 }
 signer, err2 := ssh.ParsePrivateKey(key)
 if err2 != nil {
 fmt.Println("ssh 秘鑰簽名失敗", err2)
 }
 return ssh.PublicKeys(signer)
}
//獲取ssh連接
func GetSSHConect(ip, user string, port int) (*ssh.Client) {
 con := ssh.ClientConfig{
 User: user,
 Auth: []ssh.AuthMethod{publicKey(keypath)},
 HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
 return nil
 },
 }
 addr := fmt.Sprintf("%s:%d", ip, port)
 client, err := ssh.Dial("tcp", addr, con)
 if err != nil {
 fmt.Println("Dail failed: ", err)
 panic(err)
 }
 return client
}
// 遠程執(zhí)行腳本
func Exec_Task(ip, user, localpath, remotepath string) int {
 port := 22
 client := GetSSHConect(ip, user, port)
 UploadFile(ip, user, localpath, remotepath, port)
 session, err := client.NewSession()
 if err != nil {
 fmt.Println("創(chuàng)建會話失敗", err)
 panic(err)
 }
 defer session.Close()
 remoteFileName := path.Base(localpath)
 dstFile := path.Join(remotepath, remoteFileName)
 err1 := session.Run(fmt.Sprintf("/usr/bin/sh %s", dstFile))
 if err1 != nil {
 fmt.Println("遠程執(zhí)行腳本失敗", err1)
 return 2
 } else {
 fmt.Println("遠程執(zhí)行腳本成功")
 return 1
 }
}

文件傳輸功能:

//獲取ftp連接
func getftpclient(client *ssh.Client) (*sftp.Client) {
 ftpclient, err := sftp.NewClient(client)
 if err != nil {
 fmt.Println("創(chuàng)建ftp客戶端失敗", err)
 panic(err)
 }
 return ftpclient
}
//上傳文件
func UploadFile(ip, user, localpath, remotepath string, port int) {
 client := GetSSHConect(ip, user, port)
 ftpclient := getftpclient(client)
 defer ftpclient.Close()
 remoteFileName := path.Base(localpath)
 fmt.Println(localpath, remoteFileName)
 srcFile, err := os.Open(localpath)
 if err != nil {
 fmt.Println("打開文件失敗", err)
 panic(err)
 }
 defer srcFile.Close()
 dstFile, e := ftpclient.Create(path.Join(remotepath, remoteFileName))
 if e != nil {
 fmt.Println("創(chuàng)建文件失敗", e)
 panic(e)
 }
 defer dstFile.Close()
 buffer := make([]byte, 1024)
 for {
 n, err := srcFile.Read(buffer)
 if err != nil {
 if err == io.EOF {
 fmt.Println("已讀取到文件末尾")
 break
 } else {
 fmt.Println("讀取文件出錯", err)
 panic(err)
 }
 }
 dstFile.Write(buffer[:n]) 
 //注意,由于文件大小不定,不可直接使用buffer,否則會在文件末尾重復(fù)寫入,以填充1024的整數(shù)倍
 }
 fmt.Println("文件上傳成功")
}
//文件下載
func DownLoad(ip, user, localpath, remotepath string, port int) {
 client := GetSSHConect(ip, user, port)
 ftpClient := getftpclient(client)
 defer ftpClient.Close()
 srcFile, err := ftpClient.Open(remotepath)
 if err != nil {
 fmt.Println("文件讀取失敗", err)
 panic(err)
 }
 defer srcFile.Close()
 localFilename := path.Base(remotepath)
 dstFile, e := os.Create(path.Join(localpath, localFilename))
 if e != nil {
 fmt.Println("文件創(chuàng)建失敗", e)
 panic(e)
 }
 defer dstFile.Close()
 if _, err1 := srcFile.WriteTo(dstFile); err1 != nil {
 fmt.Println("文件寫入失敗", err1)
 panic(err1)
 }
 fmt.Println("文件下載成功")
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang-gin-mgo高并發(fā)服務(wù)器搭建教程
  • golang HTTP 服務(wù)器 處理 日志/Stream流的操作
  • golang項目如何上線部署到Linu服務(wù)器(方法詳解)
  • 部署Django到阿里云服務(wù)器教程示例
  • 解決啟動django,瀏覽器顯示“服務(wù)器拒絕訪問”的問題
  • Nginx+Uwsgi+Django 項目部署到服務(wù)器的思路詳解

標(biāo)簽:黔西 保定 松原 泰安 河池 武漢 鷹潭 宜春

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go語言實現(xiàn)sftp包上傳文件和文件夾到遠程服務(wù)器操作》,本文關(guān)鍵詞  語言,實現(xiàn),sftp,包上傳,包,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《go語言實現(xiàn)sftp包上傳文件和文件夾到遠程服務(wù)器操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于go語言實現(xiàn)sftp包上傳文件和文件夾到遠程服務(wù)器操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲成人在线视频网站| 精品国产一区二区三区久久狼黑人| 国产精品久久久久久网站| 久久五月情影视| 欧美日韩精品二区第二页| 综合久久给合久久狠狠狠97色| 成人午夜电影小说| 日本欧美久久久久免费播放网| 国产精品99久久久久久久久久久久| 久久亚洲在线| 成人av网址在线| 亚洲综合在线五月| 欧洲国产精品| 国产成人拍精品视频午夜网站| 在线观看欧美日韩电影| swag国产精品一区二区| 日韩大片在线观看| 国产三级精品三级在线观看国产| 久久99精品久久久久久久久久久久| 蜜臀久久99精品久久久久久9| 亚洲a在线视频| 国产亚洲人成a一在线v站| 蜜臀久久99精品久久久| 好吊视频一区二区三区四区| av免费在线观看网址| 精品久久在线播放| 日本不卡免费播放| 亚洲欧洲日夜超级视频| 欧美午夜性色大片在线观看| 国产一二三四在线视频| 高清中文字幕一区二区三区| 久草资源在线观看| 日韩av资源| 亚洲一区二区三区综合| 玛丽玛丽电影原版免费观看1977| 色噜噜在线观看| 国产性网软件大全| 在线观看免费视频高清游戏推荐| 香蕉视频黄色片| 久草网在线观看| 精品国产xxx| 成人一区二区三区四区| 国家队第一季免费高清在线观看| 在线国产小视频| 国产精品成人一区二区三区吃奶| 欧美国产先锋| 亚洲自啪免费| 色女人在线视频| 成人一道本在线| 蜜桃在线一区| 欧洲亚洲国产日韩| 精品一区二区亚洲| 亚洲精品666| 99综合精品久久| 成人黄色在线网站| 免费观看在线综合色| 欧美老女人在线| 欧美一区二区三区成人久久片| 警花观音坐莲激情销魂小说| 亚洲免费一区二区| 亚洲美女免费视频| 九色成人国产蝌蚪91| 久久99精品国产麻豆不卡| 免费观看成年人视频| 2022国产麻豆剧果冻传媒剧情| 亚洲在线一区二区三区| 久久国产婷婷国产香蕉| 黄色网址免费在线| 曰韩少妇与小伙激情| 久青青在线观看视频国产| 国内成人精品视频| 久热这里只精品99re8久| 91香蕉国产在线观看软件| 特级西西人体4444xxxx| 精品一区二区三区中文字幕| 久久9999久久免费精品国产| 黄色激情在线观看| 国产精品成人一区二区三区电影毛片| 国产精品成人免费精品自在线观看| 亚洲一区中文字幕| 污网站免费在线观看| 欧美精品尤物在线| 国产91对白在线观看九色| 免费的av网站| 欧美日韩久久一区二区| 福利在线导航136| 四虎影院影音| 亚洲国产欧美日韩在线观看第一区| 在线观看欧美日韩电影| 中文字幕日韩免费视频| 黄色片久久久久| 一本一道久久久a久久久精品91| 日本一区二区三区www| 国产精品爽爽爽爽爽爽在线观看| 亚洲在线www| 日韩一卡二卡三卡四卡| 亚洲欧洲在线视频| 日韩欧美高清在线播放| 国产精品久久午夜| 黄色录像特级片| 激情综合网婷婷| 久久久亚洲高清| 日本成人中文字幕| 男女下面一进一出无遮挡| 色婷婷av一区二区| 成人黄色一区二区| 精品毛片在线观看| 久草福利资源在线视频| 日韩中文字幕精品视频| 一个人看的www久久| 国产一区二区三区电影在线观看| 国产精品伦理在线| 亚洲图片欧美一区| 国产成人综合一区二区三区| 99精品久久免费看蜜臀剧情介绍| 永久免费看片直接| 亚洲色偷精品一区二区三区| 成人在线网站| 欧美视频1区| 欧美精品在线一区二区三区| 午夜福利123| 亚洲精品视频网址| 中国女人久久久| 国产精品第一页第二页第三页| 日韩免费观看高清完整版| 亚洲成av人**亚洲成av**| 91亚洲精品在线| 国产精品第六页| 奇米网一区二区| 欧美性xxxxx极品视频| a视频在线观看| 在线中文免费视频| 手机看片福利盒子久久| 999精品一区| 91精品国产综合久久久久久豆腐| 国产裸体视频网站| 黄色av片三级三级三级免费看| 国产真实久久| 国产精品美女久久久久久不卡| 天堂av在线电影| 成人免费视频毛片| 成人在线观看免费| 亚洲一二区视频| 在线人成动漫视频在线观看| 日本私人网站在线观看| 欧美aaaaa成人免费观看视频| 国产精品免费网站在线观看| 久久久精品毛片| 日韩在线视频网站| av日韩中文字幕| 国产精品扒开腿做| 亚洲女人天堂av| av成人天堂| 在线免费播放av| 亚洲网址在线| 精品人妻aV中文字幕乱码色欲| 日韩成人一级| 国产+高潮+白浆+无码| 亚洲欧美另类久久久精品| 超碰国产在线| 老司机在线免费视频| 日韩欧美在线视频播放| 91精品国产吴梦梦| 91在线播放视频| 国产福利一区视频| 伊人春色在线观看| 亚洲男人的天堂一区二区| 人妻av一区二区三区| 自拍偷拍亚洲视频| 色与欲影视天天看综合网| 风间由美久久久| 久久久www成人免费精品| 国产美女被遭强高潮免费网站| 无码av中文一区二区三区桃花岛| 里番在线观看网站| 国产91ⅴ在线精品免费观看| 99在线播放| av一区二区三区四区电影| av毛片在线免费观看| 欧美一区久久久| 欧美成人xxx| 国产精品19p| 九色福利视频| 巨大荫蒂视频欧美大片| 天堂va蜜桃一区二区三区| 九色porny自拍视频| 91视频国产资源| √资源天堂中文在线| 日韩专区第三页| 亚洲免费在线电影| 九九热在线免费观看| 亚洲激情一区二区三区| 日本不卡在线视频| 欧美激情一级欧美精品| 女人黄色一级片| 在线不卡视频一区二区| 清纯唯美一区二区三区| 男人用嘴添女人下身免费视频| 国产区在线观看成人精品| 人妻视频一区二区| 欧美一级色片| 久久99久久人婷婷精品综合| 99在线精品一区二区三区| 美女av一区二区| 亚洲国产专区| 97精品国产综合久久久动漫日韩| 91欧美在线| 亚洲娇小xxxx欧美娇小| 亚洲蜜臀av乱码久久精品| 国产欧美日韩另类视频免费观看| 无码人妻一区二区三区免费| 成人综合视频在线| 久久亚洲国产视频| 国产亚洲精品久久久久久777| 日本激情视频在线播放| www.超碰在线观看| 在线观看视频一区二区欧美日韩| 波多野结衣av在线播放| 亚洲精品一区中文| 欧美色综合天天久久综合精品| 天天久久综合| 欧美午夜精品久久久| 91po在线观看91精品国产性色| 在线观看成人网| 国产精品白丝jk白祙喷水网站| 亚洲色婷婷综合开心网| 超碰在线97观看| 在线播放麻豆| 福利视频网址导航| 国产7777777| 精品久久久久久久久久久久久久久久久久| 日韩av在线电影网| 国产午夜精品一区二区| 亚洲欧美99| 欧美风情在线观看| 亚洲天堂一区二区在线观看| 美女一区二区久久| 加勒比色综合久久久久久久久| 国产午夜精品一区在线观看| 高清精品xnxxcom| 日韩一级高清毛片| 16—17女人毛片毛片| 国产精品成人免费观看| 久久福利视频网| 麻豆精品在线| 99免费在线视频观看| 麻豆视频在线观看免费| 免费亚洲视频| 欧美黄色大片在线观看| 精品伊人久久久| 中国人体摄影一区二区三区| av中文字幕不卡| 久久中文字幕精品| 中文字幕视频免费观看| 成人av高清在线| 97超碰人人模人人爽人人看| 亚洲v日韩v欧美v综合| 久久一区二区视频| 亚洲国产成人午夜在线一区| 国产精品久久久久久久久久三级| 成人在线免费视频| 日韩精品久久| 99re成人精品视频| 黄色av免费| 国产精品99久久久久久宅男| 国产精品视频九色porn| 麻豆电影在线| 国产精品一码二码三码在线| 国产成人av电影在线观看| 精品久久ai| 成人eeuss影院在线观看| 国产精品第七页| 国产精品女主播在线观看| 日本一二三不卡| 久久精品97| 国产传媒第一页| 国产黄色录像视频| 亚洲人成网在线播放| 国产视频久久久久久久| 欧美日韩在线视频一区二区| 国产成人免费视频一区| 久久一二三四| 黄色网一区二区| 中国女人一级一次看片| 欧美四级剧情无删版影片| 米奇四色影视| 免费观看视频www| 官网99热精品| 欧美日韩高清丝袜| 色综合久久久久久久久| 最新国产在线精品91尤物| 欧美双性人妖o0| 免费精品一区二区三区在线观看| 图片区偷拍区小说区| 香蕉一区二区| 国产亚洲精aa在线看| 奇米777日韩| 成人av资源网站| 国内精品国产成人国产三级粉色| 欧美一级淫片免费视频魅影视频| 久久99国产精一区二区三区| 日本一区二区三区www| 国产欧美一区二区精品性色| 免费成人av资源网| 亚洲h色精品| 欧美.日韩.国产.一区.二区| 中文字幕永久视频| 亚洲美女在线视频| 亚洲国产av一区| 国产精品直播网红| 国产欧美日韩一区二区三区四区| 中文字幕一区二区三区最新| 久久伊人精品一区二区三区| 国产又粗又大又长| 国产男男gay体育生网站| 久久久久观看| 激情婷婷综合网| 欧美黄色激情| 四虎成人永久免费视频| 无套内谢大学处破女www小说| 欧美成人免费va影院高清| 日本午夜一本久久久综合| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 高清视频一区二区三区四区| 精品国产乱码久久久久软件| 国产精品一区二区女厕厕| 欧美成人精品欧美一级| 国产探花精品一区二区|