You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang使用os/exec执行带参数SSH命令遇Exit status 127错误

Go中通过exec.Command执行带参数的SSH命令的正确方式
  • 问题根源:你在第二个命令里给远程命令套了单引号,把'ls .'作为单独参数传给ssh后,远程服务器的shell会把整个带引号的字符串当成命令名去查找——系统里根本不存在叫'ls .'(包含单引号和空格)的命令,所以报Exit status 127错误。

  • 正确写法:不需要给远程命令加额外的单引号,直接把完整的命令字符串作为ssh的第三个参数传入即可:

out, err := exec.Command("ssh", "myserver.com", "ls .").Output()
  • 复杂命令处理:如果远程命令包含管道、重定向或者多参数组合,同样直接传完整命令字符串就行,比如:
// 带管道的命令
out, err := exec.Command("ssh", "myserver.com", "ls -l | grep .txt").Output()
// 带重定向的命令
out, err := exec.Command("ssh", "myserver.com", "echo 'hello' > test.txt").Output()
  • 补充说明:第一个命令'ls'能运行是因为远程shell会自动解析掉外层单引号,执行实际的ls命令,但这种写法是多余的,规范写法应该直接传"ls"。

内容的提问来源于stack exchange,提问作者Tobi696

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:15:41