91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在golang中利用ssh連接服務器

發布時間:2021-05-24 15:18:18 來源:億速云 閱讀:184 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關怎么在golang中利用ssh連接服務器,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1. 發送指令執行 session.Run()

package main

import (
    "bytes"
    "fmt"
    "golang.org/x/crypto/ssh"
    "log")

func main() {
    // 建立SSH客戶端連接
    client, err := ssh.Dial("tcp", "127.0.0.1:2222", &ssh.ClientConfig{
        User:            "root",
        Auth:            []ssh.AuthMethod{ssh.Password("123456")},
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
    })
    if err != nil {
        log.Fatalf("SSH dial error: %s", err.Error())
    }

    // 建立新會話
    session, err := client.NewSession()
    if err != nil {
        log.Fatalf("new session error: %s", err.Error())
    }

    defer session.Close()


    var b bytes.Buffer
    session.Stdout = &b
    if err := session.Run("ls"); err != nil {
        panic("Failed to run: " + err.Error())
    }
    fmt.Println(b.String())
}

2. 發送指令執行 session.Output()

session.run(command)是直接在host執行命令,不關心執行結果。session.Output是將執行命令之后的Stdout返回

package main

import (
    "fmt"
    "golang.org/x/crypto/ssh"
    "log"
    "os")

func test() {

    // 建立SSH客戶端連接
    client, err := ssh.Dial("tcp", "127.0.0.1:2222", &ssh.ClientConfig{
        User:            "root",
        Auth:            []ssh.AuthMethod{ssh.Password("123456")},
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
    })
    if err != nil {
        log.Fatalf("SSH dial error: %s", err.Error())
    }

    // 建立新會話
    session, err := client.NewSession()
    defer session.Close()
    if err != nil {
        log.Fatalf("new session error: %s", err.Error())
    }

    result, err := session.Output("ls -al")
    if err != nil {
        fmt.Fprintf(os.Stdout, "Failed to run command, Err:%s", err.Error())
        os.Exit(0)
    }
    fmt.Println(string(result))
}

3. 模擬交互terminal

package main

import (
    "golang.org/x/crypto/ssh"
    "log"
    "os")

func main() {
    // 建立SSH客戶端連接
    client, err := ssh.Dial("tcp", "127.0.0.1:2222", &ssh.ClientConfig{
        User:            "root",
        Auth:            []ssh.AuthMethod{ssh.Password("123456")},
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
    })
    if err != nil {
        log.Fatalf("SSH dial error: %s", err.Error())
    }

    // 建立新會話
    session, err := client.NewSession()
    defer session.Close()
    if err != nil {
        log.Fatalf("new session error: %s", err.Error())
    }

    session.Stdout = os.Stdout // 會話輸出關聯到系統標準輸出設備
    session.Stderr = os.Stderr // 會話錯誤輸出關聯到系統標準錯誤輸出設備
    session.Stdin = os.Stdin   // 會話輸入關聯到系統標準輸入設備
    modes := ssh.TerminalModes{
        ssh.ECHO:          0,  // 禁用回顯(0禁用,1啟動)
        ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud
        ssh.TTY_OP_OSPEED: 14400, //output speed = 14.4kbaud    }
    if err = session.RequestPty("linux", 32, 160, modes); err != nil {
        log.Fatalf("request pty error: %s", err.Error())
    }
    if err = session.Shell(); err != nil {
        log.Fatalf("start shell error: %s", err.Error())
    }
    if err = session.Wait(); err != nil {
        log.Fatalf("return error: %s", err.Error())
    }
}

禁用回顯:

//如果不禁用回顯
[root@65a9c031a770 ~]# ls
ls
anaconda-ks.cfg


//禁用回顯
[root@65a9c031a770 ~]# ls
anaconda-ks.cfg

什么是golang

golang 是Google開發的一種靜態強類型、編譯型、并發型,并具有垃圾回收功能的編程語言,其語法與 C語言相近,但并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能。

關于怎么在golang中利用ssh連接服務器就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

虹口区| 新安县| 凤冈县| 隆安县| 巴中市| 锦屏县| 刚察县| 东台市| 新乡市| 安福县| 安庆市| 临猗县| 团风县| 锡林浩特市| 唐河县| 平湖市| 蒙城县| 仁化县| 文山县| 屏山县| 社会| 宁乡县| 太仆寺旗| 镇雄县| 屏东县| 诸暨市| 高阳县| 杭锦旗| 新干县| 浙江省| 闽侯县| 安泽县| 滦平县| 天津市| 宾川县| 长沙市| 枣庄市| 乐清市| 潼关县| 深圳市| 丹东市|