第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

go-scp 庫不工作但 scp 工作正常

go-scp 庫不工作但 scp 工作正常

Go
慕標(biāo)5832272 2022-11-23 19:58:20
我正在使用 go-scp 并嘗試復(fù)制到 solarwinds 服務(wù)器(windows 服務(wù)器)并等待超時(shí)錯(cuò)誤,而我嘗試命令行 scp 它工作正常。我還發(fā)現(xiàn)在 go-scp 庫err := a.Session.Run(fmt.Sprintf("%s -qt %q", a.RemoteBinary, remotePat) 中的CopyPassThru函數(shù)中刪除 -q 選項(xiàng)后,沒有等待超時(shí)錯(cuò)誤,但文件在遠(yuǎn)程服務(wù)器上為空我無法通過命令行 SSH 到 solarwinds 服務(wù)器。代碼如下所示package mainimport (    "fmt"    scp "github.com/bramvdbogaerde/go-scp"    "golang.org/x/crypto/ssh"    "os"    "strings"    "time")func main() {    // Use SSH key authentication from the auth package    // we ignore the host key in this example, please change this if you use this library    // create ssh client config    var authParam ssh.AuthMethod    authParam = ssh.Password("1234")    clientConfig := &ssh.ClientConfig{        User: "admin",        Auth: []ssh.AuthMethod{            authParam,        },        HostKeyCallback: ssh.InsecureIgnoreHostKey(),        Timeout:time.Minute,    }    // For other authentication methods see ssh.ClientConfig and ssh.AuthMethod    // Create a new SCP client    client := scp.NewClient("10.154.92.32:22", clientConfig)    // Connect to the remote server    err := client.Connect()    if err != nil {        fmt.Println("Couldn't establish a connection to the remote server ", err)        return    }    // Close client connection after the file has been copied    defer client.Close()    // Finally, copy the file over    // Usage: CopyFile(fileReader, remotePath, permission)    fileString := "testing \n"     myReader := strings.NewReader(fileString)    err = client.CopyFile(myReader, "/test", "0777")    if err != nil {        fmt.Println("Error while copying file ", err)    }}
查看完整描述

1 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

對(duì)于對(duì)該scp包有問題的任何人(我也有問題),這是一種cat用于傳輸單個(gè)文件的解決方法。它只使用ssh包。


這個(gè)想法是使用不帶參數(shù)的 cat 從標(biāo)準(zhǔn)輸入讀取。在我們的會(huì)話對(duì)象中,我們提供本地文件作為標(biāo)準(zhǔn)輸入。然后我們將 cat 的輸出通過管道>傳輸?shù)剿璧奈募?/p>


反向方式類似,這次我們攔截會(huì)話對(duì)象的標(biāo)準(zhǔn)輸出。我們 cat 遠(yuǎn)程文件并將會(huì)話的標(biāo)準(zhǔn)輸出復(fù)制到我們的本地文件。


這是代碼:


package main


import (

    "bytes"

    "errors"

    "os"


    "golang.org/x/crypto/ssh"

)


func main() {

    config := &ssh.ClientConfig{

        HostKeyCallback: ssh.InsecureIgnoreHostKey(),

        User:            "user",

        Auth:            []ssh.AuthMethod{ssh.Password("password")},

    }

    client, err := ssh.Dial("tcp", "10.0.0.1:22", config)

    if err != nil {

        panic(err)

    }

    defer client.Close()


    err = setFile(client, "local/file", "remote/file")

    if err != nil {

        panic(err)

    }


    err = getFile(client, "remote/file", "local/file")

    if err != nil {

        panic(err)

    }

}


func setFile(client *ssh.Client, from, to string) error {

    f, err := os.Open(from)

    if err != nil {

        return err

    }

    defer f.Close()


    session, err := client.NewSession()

    if err != nil {

        return err

    }

    defer session.Close()


    session.Stdin = f

    var stderr bytes.Buffer

    session.Stderr = &stderr

    err = session.Run("cat > '" + to + "'")

    if err != nil && stderr.Len() > 0 {

        err = errors.New(err.Error() + ": " + string(stderr.Bytes()))

    }

    return err

}


func getFile(client *ssh.Client, from, to string) error {

    f, err := os.Create(to)

    if err != nil {

        return err

    }

    defer f.Close()


    session, err := client.NewSession()

    if err != nil {

        return err

    }

    defer session.Close()


    session.Stdout = f

    var stderr bytes.Buffer

    session.Stderr = &stderr

    err = session.Run("cat '" + from + "'")

    if err != nil && stderr.Len() > 0 {

        err = errors.New(err.Error() + ": " + string(stderr.Bytes()))

    }

    return err

}


查看完整回答
反對(duì) 回復(fù) 2022-11-23
  • 1 回答
  • 0 關(guān)注
  • 175 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)