使用多个参数运行Linux命令

时间:2014-06-12 09:08:38

标签: 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

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

2 个答案:

答案 0 :(得分:7)

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

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

如果您需要更精细的内容,还可以查看go.crypto/ssh包。

答案 1 :(得分:-1)

如果你想在远程机器上运行多个命令,下面的技巧可能会帮助你实现这一目标。

Ssh username@ip < EOf

ls -I

Pwd

Uname

Eof

请注意,它不会传递任何特殊字符,例如. ,等。