Go:使用golang中的参数模拟ssh远程执行本地脚本

问题描述 投票:0回答:1

我正在尝试使用go执行任何类型的本地脚本(sh / bash / python / ruby​​)或带有参数的可执行文件到远程计算机。ssh命令:ssh [email protected] "python3" - < ./test.py "arg1"

package main
import (
    "log"
    "os"

    "golang.org/x/crypto/ssh"
)

func main()  {
    user := "user"
    hostport := "10.10.10.10:22"
    script, _ := os.OpenFile("test.py", os.O_RDWR|os.O_CREATE, 0755)
    interpreter := "python3"
    client, session, err := connectToHost(user, hostport) 
    session.Stdin = script
    session.Stdout = os.Stdout
    err = session.Run(interpreter)
    if err != nil {
        log.Fatal(err)
    }
    client.Close()
    defer session.Close()
}

示例ssh命令运行正常,我也能够在远程服务器上执行本地test.py,但是我想不出任何有效的方式来帮助我传递参数(例如arg1)作为好。感谢您的帮助。

go ssh arguments remote-execution
1个回答
0
投票

为什么不将标志传递给python文件?通过使用小于号,您实际上是将test.py的输出输入到Go可执行文件中。

ssh [email protected] "python3" - < ./test.py <flag1> "arg1" <flag2> "arg2"

除非我从根本上误解了您要做什么?

© www.soinside.com 2019 - 2024. All rights reserved.