Go 通过多个命令传递密码

Go 通过多个命令传递密码,go,ssh,Go,Ssh,我在执行多个命令时遇到问题 例如,在下面的场景中,我可以登录路由器并执行命令 但是如何为多个命令创建它呢 在我的例子中,我需要先执行命令“enable”,传递密码,然后运行命令“showclock” 有这样的例子吗 package main import ( "byt es" "golang.org/x/crypto/ssh" "fmt" "os" "time" ) func executeCmd(cmd

我在执行多个命令时遇到问题

例如,在下面的场景中,我可以登录路由器并执行命令

但是如何为多个命令创建它呢

在我的例子中,我需要先执行命令“enable”,传递密码,然后运行命令“showclock”

有这样的例子吗

package main

import (
    "byt

es"
       "golang.org/x/crypto/ssh"
        "fmt"
        "os"
        "time"
    )

    func executeCmd(cmd, hostname string, config *ssh.ClientConfig) string {
        conn, _ := ssh.Dial("tcp", hostname+":22", config)
        session, _ := conn.NewSession()
        defer session.Close()

        var stdoutBuf bytes.Buffer
        session.Stdout = &stdoutBuf
        session.Run(cmd)
        return hostname + ": " + stdoutBuf.String()
    }

        func main() {
            cmd := "show clock"
            hosts := os.Args[1:]
            results := make(chan string, 90)
            timeout := time.After(5 * time.Second)
           config := &ssh.ClientConfig{
                User: "test",
                Auth: []ssh.AuthMethod{
                    ssh.Password("test"),
                },
            }

            for _, hostname := range hosts {
                go func(hostname string) {
                    results <- executeCmd(cmd, hostname, config)
                }(hostname)
            }

            for i := 0; i < len(hosts); i++ {
                select {
                case res := <-results:
                    fmt.Print(res)
                case <-timeout:
                    fmt.Println("Timed out!")
                    return
                }
            }
        }
主程序包
进口(
“比亚迪
es“
“golang.org/x/crypto/ssh”
“fmt”
“操作系统”
“时间”
)
func executeCmd(cmd,主机名字符串,config*ssh.ClientConfig)字符串{
conn,:=ssh.Dial(“tcp”,主机名+“:22”,配置)
会话:=conn.NewSession()
延迟会话。关闭()
var stdoutBuf bytes.Buffer
session.Stdout=&stdoutBuf
session.Run(cmd)
返回主机名+“:”+stdoutBuf.String()
}
func main(){
cmd:=“显示时钟”
主机:=os.Args[1:]
结果:=制造(成串,90)
超时:=时间后(5*时间秒)
config:=&ssh.ClientConfig{
用户:“测试”,
Auth:[]ssh.AuthMethod{
ssh.Password(“test”),
},
}
对于u,主机名:=范围主机{
go func(主机名字符串){

结果发送两个命令以串行方式执行。与从命令行与ssh非交互的方式相同。
cmd:=“show clock&&echo'Hello World'&&echo/home/root/.ssh/rsa”
:)我遇到的问题是cmd:=“cmd:=enable”但是,在我键入enable之后,我需要传递密码。您需要一个密码:发送两个命令以串行方式执行。与从命令行与ssh进行非交互操作的方式相同。
cmd:=“show clock&&echo'Hello World'&&echo/home/root/.ssh/rsa”
:)我遇到的问题是cmd:=“cmd:=enable”但我需要在键入“启用”后传递密码,并要求您输入密码: