婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Golang通過SSH執行交換機操作實現

Golang通過SSH執行交換機操作實現

熱門標簽:廣東語音外呼系統供應商 賺地圖標注的錢犯法嗎 智能電銷機器人營銷 濮陽自動外呼系統代理 地圖標注測試 長沙ai機器人電銷 福州鐵通自動外呼系統 澳門防封電銷卡 烏魯木齊人工電銷機器人系統

簡單實現通過輸入指令,兩步執行交換機命令。

  • 輸入執行換機的賬號和密碼。可以一次輸入多個賬號和密碼,為了方便操作,規定了輸入格式。如 用戶名;主機IP;密碼|用戶名;主機IP;密碼。舉例admin;192.168.56.10;h3csw1|admin;192.168.56.11;h3csw2
  • 輸入要執行的命令,以;分割。例如system-view;dis cu;

​ 存在問題:

  • 不夠靈活。輸入方式限制太死,輸入特別字符也可能存在錯誤。
  • 過于簡陋。
  • 功能簡單。

​ 不過我的目的已經達到,我主要是了解ssh的使用。

package main

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

//獲取賬號和密碼的對應關系
type HostPassword struct {
  Host string
  Username string
  Password string
}
var (
  a,b string //臨時存儲變量
  commands = []string{} //執行命令組
  hp []HostPassword //保存賬號和密碼
  wg sync.WaitGroup  //執行goroutine

)
func main() {
  //1. 選擇交換機
  //2. 輸入要執行命令
  //3. 建立會話連接
  //4. 新建session,并執行命令

  //1. 選擇操作交換機
  // 1.1 輸入要執行交換機
  fmt.Println("請輸入計劃執行命令的交換機賬號和密碼,賬號密碼直接使用|分割,多個賬號密碼之間使用;分割,例如admin;192.168.56.10;h3csw1|admin;192.168.56.11;h3csw2")
  _, err := fmt.Scanln(a)
  if err != nil {
    log.Fatal("輸入錯誤:",err)
  }
  fmt.Println("請輸入要執行的命令行,以;號間隔")
  //1.1.1切割交換機命令
  switchgroups := strings.Split(a, "|")
  length := len(switchgroups)
  hp = make([]HostPassword,length)
  for i,singleswitch := range switchgroups{
    hp[i]=HostPassword{}
    switchsplit := strings.Split(singleswitch, ";")
    hp[i].Username=switchsplit[0]
    hp[i].Host=switchsplit[1]
    hp[i].Password=switchsplit[2]
  }

  // 1.2 輸入要執行命令
  input := bufio.NewReader(os.Stdin)
  b, err := input.ReadString('\n')
  if err != nil {
    log.Fatal("輸入錯誤",err)
  }
  commands = strings.Split(b, ";")

  //2. 執行交換機操作
  err = SshSwitch(hp)
  if err != nil {
    log.Fatalln(err)
  }

  // 同步等待
  wg.Wait()
}

//建立ssh連接
func SshSwitch(hostpasswords []HostPassword) (error){
  //循環獲取hostpasswords的賬號和密碼
  for i,_ := range hp{
    //添加同步組,下面會執行goroutin
    wg.Add(1)
    config := ssh.ClientConfig{
      Config:      ssh.Config{
        Ciphers:    []string{"aes128-ctr", "aes192-ctr", "aes256-ctr", "aes128-gcm@openssh.com", "arcfour256", "arcfour128", "aes128-cbc", "3des-cbc", "aes192-cbc", "aes256-cbc"},
      }, //添加了很多加密方式,為了應對不同的密碼規則
      User:       hp[i].Username,
      Auth:       []ssh.AuthMethod{
        ssh.Password(hp[i].Password),
      },
      HostKeyCallback:  ssh.InsecureIgnoreHostKey(), //此處相當于執行nil,但是并不安全
    }
    client, err := ssh.Dial("tcp",hp[i].Host+":22", config)
    if err != nil {
      log.Fatalln("建立ssh連接錯誤:",err)
      return err
    }
    //執行goroutine,但是沒有返回錯誤。
    go HandleSession(client, commands,wg)

  }
  return nil
}

//建立session,執行命令。
func HandleSession(client *ssh.Client,commands []string,wg *sync.WaitGroup) error {
  //建立session
  session, err := client.NewSession()
  if err != nil {
    log.Fatalln("創建session出錯",err)
    return err
  }
  //延遲關閉session
  defer session.Close()

  //設置terminalmodes的方式
  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
  }
  //建立偽終端
  err = session.RequestPty("xterm",80,40,modes)
  if err != nil {
    log.Fatal("創建requestpty出錯",err)
    return err
  }
  //設置session的標準輸入是stdin
  stdin, err := session.StdinPipe()
  if err != nil {
    log.Fatal("輸入錯誤",err)
    return err
  }
  //設置session的標準輸出和錯誤輸出分別是os.stdout,os,stderr.就是輸出到后臺
  session.Stdout = os.Stdout
  session.Stderr = os.Stderr
  err = session.Shell()
  if err != nil {
    log.Fatal("創建shell出錯",err)
    return err
  }
  //將命令依次執行
  for _, cmd := range commands {
    fmt.Println(cmd)
    _, err = fmt.Fprintf(stdin, "%s\n", cmd)
    if err != nil {
      log.Fatal("寫入stdin出錯",err)
      return err
    }
  }

  //執行等待
  err = session.Wait()
  if err != nil {
    log.Fatal("等待session出錯",err)
    return err
  }
  //減少同步組的次數
  wg.Done()
  return nil
}

到此這篇關于Golang通過SSH執行交換機操作實現的文章就介紹到這了,更多相關Golang SSH執行交換機內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • golang中連接mysql數據庫
  • Golang操作MySql數據庫的完整步驟記錄
  • 如何利用Golang解析讀取Mysql備份文件
  • Golang中如何對MySQL進行操作詳解
  • golang gorm 操作mysql及gorm基本用法
  • golang 通過ssh代理連接mysql的操作

標簽:廣西 太原 德州 貴陽 西雙版納 慶陽 阿克蘇 調研邀請

巨人網絡通訊聲明:本文標題《Golang通過SSH執行交換機操作實現》,本文關鍵詞  Golang,通過,SSH,執行,交換機,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Golang通過SSH執行交換機操作實現》相關的同類信息!
  • 本頁收集關于Golang通過SSH執行交換機操作實現的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    青青草国产成人av片免费 | 欧美激情中文不卡| 亚洲福利一区二区| 99国产欧美另类久久久精品| 久久久久久毛片| 日韩国产欧美一区二区三区| 91在线精品一区二区| 欧美一级片免费看| 免费成人在线影院| 欧美日韩www| 亚洲高清视频中文字幕| 欧日韩精品视频| 国产精品伦理一区二区| 国产宾馆实践打屁股91| 欧美激情一区二区三区四区| 国产成人精品亚洲777人妖| 91精品国产综合久久久蜜臀图片| 亚洲一区二区三区四区在线观看| 色婷婷av一区二区三区大白胸| 亚洲国产精品成人久久综合一区| 蜜乳av一区二区| 欧美日本国产视频| 美国精品在线观看| 欧美白人最猛性xxxxx69交| 亚洲电影欧美电影有声小说| 日本韩国精品在线| 蜜桃视频在线观看一区二区| 日韩午夜在线影院| 国产精品综合一区二区| 久久综合成人精品亚洲另类欧美| 奇米影视在线99精品| 国产嫩草影院久久久久| 欧美色图12p| 国产成a人无v码亚洲福利| 国产呦萝稀缺另类资源| 久久一日本道色综合| www.66久久| 婷婷激情综合网| 国产午夜一区二区三区| jizz一区二区| 久久97超碰国产精品超碰| 亚洲欧美日韩国产综合在线| 欧美精品一区二区久久久| 91香蕉视频mp4| 国产自产高清不卡| 亚洲aaa精品| 中文字幕一区二区三区精华液| 欧美日韩不卡一区二区| 欧美在线一区二区三区| 国产中文字幕一区| 午夜a成v人精品| 亚洲一区二区成人在线观看| 国产精品成人午夜| 正在播放亚洲一区| 欧美亚洲国产一区二区三区va| 国产乱人伦偷精品视频不卡| 日本视频在线一区| 美女网站一区二区| 国产在线不卡一区| 久久66热re国产| 日本成人在线电影网| 亚洲v日本v欧美v久久精品| 一区二区三区免费在线观看| 中文字幕一区二区三区在线不卡| 久久综合久久综合久久综合| 欧美精品一区二区三| 中国色在线观看另类| 夜夜嗨av一区二区三区四季av| 伊人开心综合网| 亚洲午夜精品在线| 美女视频一区二区| 色婷婷久久综合| 欧美在线免费视屏| 日韩一区和二区| 日本一区二区三区在线观看| 亚洲精品美国一| 精品一二三四区| 99久久精品免费精品国产| 色综合天天狠狠| 日本韩国视频一区二区| 欧美一区二区三区免费观看视频| 国产欧美综合色| 亚洲女子a中天字幕| 狂野欧美性猛交blacked| www.亚洲人| 91精品国产色综合久久不卡蜜臀 | 欧美日韩国产天堂| 欧美成人video| 国产精品嫩草影院com| 国内国产精品久久| 欧日韩精品视频| 国产亚洲欧美色| 亚洲成av人片www| 欧美视频一区二区三区| 久久只精品国产| 国产欧美精品区一区二区三区| 一区二区国产盗摄色噜噜| 日韩av电影免费观看高清完整版 | 亚洲一区在线视频| 国产在线看一区| 国产清纯白嫩初高生在线观看91 | 日本黄色一区二区| 国产午夜三级一区二区三| 激情文学综合网| 日韩精品一区二区三区视频在线观看| 亚洲乱码中文字幕综合| 色综合网色综合| 亚洲视频一区在线观看| 在线观看亚洲成人| 亚洲在线一区二区三区| 成人av影院在线| 亚洲欧美在线视频观看| 成人激情免费电影网址| 一色屋精品亚洲香蕉网站| 色婷婷国产精品综合在线观看| 亚洲欧美另类久久久精品2019| 92精品国产成人观看免费| 中文字幕电影一区| 色婷婷综合久久久久中文一区二区 | 久久久久久久综合日本| 成人a免费在线看| 一区二区三区四区高清精品免费观看| 91免费看视频| 三级欧美韩日大片在线看| 欧美福利一区二区| 亚洲第一主播视频| 精品福利在线导航| 国产精品伊人色| 中文字幕五月欧美| 欧美中文字幕不卡| 国产一区二区三区| 日韩国产一二三区| 亚洲午夜精品在线| 日本午夜一本久久久综合| 精品免费国产一区二区三区四区| 在线亚洲人成电影网站色www| 91视频观看免费| 欧美日韩综合不卡| 欧美一区二区三区在线看| 欧美变态tickling挠脚心| 精品va天堂亚洲国产| 亚洲人一二三区| 亚洲欧美日韩国产另类专区| 精品国产成人系列| 色欧美乱欧美15图片| 国产一区二区福利视频| 秋霞av亚洲一区二区三| 中文字幕一区免费在线观看| 久久一夜天堂av一区二区三区 | 精品视频免费在线| 麻豆一区二区三| 国产另类ts人妖一区二区| 91精选在线观看| 国内成人精品2018免费看| 2023国产精品视频| 成人综合日日夜夜| 一区二区三区av电影| 欧美精品三级日韩久久| 美腿丝袜一区二区三区| 欧美激情综合在线| 色婷婷av一区二区三区gif| 亚洲成av人片| 久久午夜老司机| 成人免费精品视频| 亚洲二区视频在线| 精品少妇一区二区三区在线播放| 国产成人欧美日韩在线电影| 亚洲精品欧美二区三区中文字幕| 欧美亚男人的天堂| 国产真实乱对白精彩久久| 中文字幕一区二区三区视频| 欧美一区二区三区视频免费 | 中文字幕字幕中文在线中不卡视频| 色欧美乱欧美15图片| 男男视频亚洲欧美| 欧美高清在线精品一区| 欧美日韩dvd在线观看| 国产成人aaaa| 三级一区在线视频先锋| 69堂国产成人免费视频| 五月激情丁香一区二区三区| 96av麻豆蜜桃一区二区| 亚洲免费伊人电影| 午夜免费欧美电影| 国产精品天干天干在线综合| 91精品久久久久久久99蜜桃 | 亚洲另类一区二区| 蜜桃视频第一区免费观看| 91首页免费视频| 久久久精品欧美丰满| 喷水一区二区三区| 在线观看日韩一区| 国产精品午夜久久| 九九精品一区二区| 欧美色区777第一页| 一区二区三区中文字幕| 波多野结衣精品在线| 久久精品日韩一区二区三区| 五月激情综合网| 911国产精品|