第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 ssh 和交互式 shell 時模擬按鍵

如何使用 ssh 和交互式 shell 時模擬按鍵

Go
哈士奇WWW 2022-08-24 16:13:20
卡在按鍵上我正在嘗試創(chuàng)建一個腳本,該腳本可以從HP proCurve交換機進行備份。為此,我正在使用軟件包。golang.org/x/crypto/sshGolang對我來說并不陌生,我有相當多的“Go”知識。但是在建立連接后,我遇到了困難。開關要求我按任意鍵繼續(xù),但我不知道如何模擬按鍵。(見下圖)當前代碼這是我當前使用的代碼:package mainimport (    "bufio"    "fmt"    "log"    "net"    "os"    "golang.org/x/crypto/ssh")type password stringfunc main() {    host := "192.168.2.43:22"    user := "admin"    pass := "admin"    config := &ssh.ClientConfig{        User: user,        Auth: []ssh.AuthMethod{            ssh.Password(pass),        },        Config: ssh.Config{            KeyExchanges: []string{"diffie-hellman-group-exchange-sha1", "diffie-hellman-group1-sha1"},        },        HostKeyCallback: ssh.HostKeyCallback(func(hostname string, remote net.Addr, key ssh.PublicKey) error { return nil }),    }    conn, err := ssh.Dial("tcp", host, config)    if err != nil {        panic("Failed to dial: " + err.Error())    }    defer conn.Close()    // Each ClientConn can support multiple interactive sessions,    // represented by a Session.    session, err := conn.NewSession()    if err != nil {        panic("Failed to create session: " + err.Error())    }    defer session.Close()    // Set IO    session.Stdout = os.Stdout    session.Stderr = os.Stderr    in, _ := session.StdinPipe()    // Set up terminal modes    modes := ssh.TerminalModes{        ssh.ECHO:          0,     // disable echoing        ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud        ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud    }    // Request pseudo terminal    if err := session.RequestPty("xterm", 80, 40, modes); err != nil {        log.Fatalf("request for pseudo terminal failed: %s", err)    }    // Start remote shell    if err := session.Shell(); err != nil {        log.Fatalf("failed to start shell: %s", err)    }}
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

在寫入 ssh 連接之前,您正在從標準輸入中讀取。因此,此屏幕只能通過手動干預跳過。


讀取命令行的標準輸入應該在要在主機上運行的任何初始命令之后進行,因此它將按如下方式組織:


    // Requires keypress to continue

    fmt.Fprint(in, " \n")

    // List out useful information

    fmt.Fprint(in, "show run \n")


    // Forward user commands to the remote shell

    for {

        reader := bufio.NewReader(os.Stdin)

        str, _ := reader.ReadString('\n')

        fmt.Fprint(in, str)

    }


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號