为了账号安全,请及时绑定邮箱和手机立即绑定

在golang中执行ssh

在golang中执行ssh

Go
梦里花落0921 2022-06-01 10:06:20
我正在寻找一种从 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)

    }

}


查看完整回答
反对 回复 2022-06-01
?
手掌心

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。谢谢你帮助我!


查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号