经过一番挖掘后,我可以像这样运行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
更新:为方便起见,我更新了问题。
答案 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
请注意,它不会传递任何特殊字符,例如. ,
等。