這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
golang ssh host 串連華為NE5k路由器並支援more分頁符
- 利用golang/x/crypto/ssh實現並參考作者: CodyGuo代碼
- 登入華為路由器執行命令display version和display arp statistics all
- 對終端屏寬產生的分頁符做處理
- 可用作單台裝置執行命令列印輸出之用
重點code說明
...in <- "display version" //執行輸入goroutinein <- "display arp statistics all"...go func() { for cmd := range in { wg.Add(1) w.Write([]byte(cmd + "\n")) wg.Wait() //控制每次goroutine執行一條命令 } }()go func() { var ( buf [1024 * 1024]byte t int ) for { n, err := r.Read(buf[t:]) if err != nil { fmt.Println(err.Error()) close(in) close(out) return } t += n result := string(buf[:t]) //迴圈處理裝置分頁符 if strings.Contains(string(buf[t-n:t]), "More") { w.Write([]byte("\n")) } //匹配等待符完成一條操作清空goroutine if strings.Contains(result, "username:") || strings.Contains(result, "password:") || strings.Contains(result, ">") { out <- string(buf[:t]) t = 0 wg.Done() } } }()...
TestUnit
display versionHuawei Versatile Routing Platform SoftwareVRP (R) software, Version 5.90 (NE40E&80E V600R003C00SPCa00)Copyright (C) 2000-2012 Huawei Technologies Co., Ltd.HUAWEI NE80E uptime is 1695 days, 20 hours, 57 minutesNE80E version information:- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -BKP 1 version information: PCB Version : CR52BKPA REV B MPU Slot Quantity : 2 SRU Slot Quantity : 0 SFU Slot Quantity : 4 LPU Slot Quantity : 16.........<HK-HK-CW-F-1.CN2>display arp statistics allDynamic: 345 Static: 0 <HK-HK-CW-F-1.CN2>