中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么在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

勃利县| 常山县| 龙海市| 合江县| 寿光市| 龙胜| 兴义市| 图片| 南投县| 阿勒泰市| 吉隆县| 钟山县| 临沭县| 镇康县| 淳安县| 库伦旗| 姚安县| 阜城县| 安岳县| 河津市| 万山特区| 阜南县| 绥德县| 花莲市| 黑河市| 满洲里市| 舟山市| 安徽省| 丹凤县| 平塘县| 怀仁县| 务川| 静宁县| 高阳县| 林口县| 铁岭市| 怀安县| 富川| 十堰市| 收藏| 洛扎县|