相关疑难解决方法(0)

使用crypto/ssh的golang scp文件

我正在尝试通过 ssh 下载远程文件以下方法在 shell 上工作正常

ssh hostname "tar cz /opt/local/folder" > folder.tar.gz
Run Code Online (Sandbox Code Playgroud)

然而,golang 上的相同方法在输出工件大小方面存在一些差异。例如,与纯 shell 相同的文件夹产生工件 gz 文件 179B,与 go script 178B 相同。我认为 io.Reader 中遗漏了一些东西,或者 session 更早关闭了。恳请各位大侠帮忙。

这是我的脚本示例:

func executeCmd(cmd, hostname string, config *ssh.ClientConfig, path string) error {
    conn, _ := ssh.Dial("tcp", hostname+":22", config)
    session, err := conn.NewSession()
    if err != nil {
        panic("Failed to create session: " + err.Error())
    }

    r, _ := session.StdoutPipe()
    scanner := bufio.NewScanner(r)

    go func() {
        defer session.Close()

        name := fmt.Sprintf("%s/backup_folder_%v.tar.gz", path, time.Now().Unix())
        file, err …
Run Code Online (Sandbox Code Playgroud)

ssh scp go

4
推荐指数
1
解决办法
8224
查看次数

标签 统计

go ×1

scp ×1

ssh ×1