我正在寻找一种从 golang 程序在终端中启动 ssh 的方法。func main() { cmd := exec.Command("ssh", "user@192.168.0.17", "-p", "2222") err := cmd.Run() if err != nil { panic(err) }}这很好用,直到我输入正确的密码,然后程序退出。我猜想在经过身份验证后,会启动另一个 ssh 脚本,但我不知道如何解决这个问题。我已经搜索了一些关于它的信息,但我发现的只是如何在 go 中创建一个 ssh 会话,如果可能的话,我想避免这种情况。
2 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
你应该传入stdin,stdout和stderr:
package main
import (
"os"
"os/exec"
)
func main() {
cmd := exec.Command("ssh", "user@192.168.0.17", "-p", "2222")
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err := cmd.Run()
if err != nil {
panic(err)
}
}
手掌心
TA贡献1942条经验 获得超3个赞
我找到了另一种解决问题的方法,方法是:
binary, lookErr := exec.LookPath("ssh")
if lookErr != nil {
panic(lookErr)
}
syscall.Exec(binary, []string{"ssh", "user@192.168.0.17", "-p", "2222"}, os.Environ())
这将关闭程序的进程并在另一个进程上启动 ssh。谢谢你帮助我!
- 2 回答
- 0 关注
- 148 浏览
添加回答
举报
0/150
提交
取消
