一尘不染

使用多个参数运行Linux命令

go

经过一些挖掘后,我可以这样运行Linux命令:

func main() {
    lsCmd := exec.Command("ls")
    lsOut, err := lsCmd.Output()
    if err != nil {
        panic(err)
    }
    fmt.Println(">ls")
    fmt.Println(string(lsOut))
}

我想做的是,在远程计算机上运行以下命令:

ssh -p $someport $someuser@$someip 'ls'

我可以从终端成功完成此操作,但是当我尝试在Go中运行它时,出现以下错误:

panic: exec: "ssh -p $someport $someuser@$someip 'ls'": executable file not found in $PATH

更新 :为了方便起见,我更新了问题。


阅读 311

收藏
2020-07-02

共1个答案

一尘不染

根据有关exec软件包的文档,程序名称和参数是Command方法的不同参数。您应该这样做:

exec.Command("ssh", "-p port", "user@ip", "'ls'")

如果您需要更详细的说明,还可以查看go.crypto /
ssh
软件包。

2020-07-02