A packaged SSH library for switches (huawei,h3c,cisco,nos). A session pool is implemented to avoid repeated connection devices and automatically clear sessions that are not used for 10 minutes.
$ go get github.com/shenbowei/switch-ssh-go
switch-ssh-go implemented a connection pool to save the session, and each session before the execution of the command verifies the availability of the session, so you can call the following method repeatedly (not repeatedly connecting the device).
//get the switch brand(vendor), include h3c,huawei and cisco
brand, err := ssh.GetSSHBrand(user, password, ipPort)
//run the cmds in the switch, and get the execution results
result, err := ssh.RunCommands(user, password, ipPort, cmds...)
//run the cmds in the switch with the device brand(the first connection will be faster), and get the execution results
result, err := ssh.RunCommandsWithBrand(user, password, ipPort, ssh.CISCO, cmds...)
package main
import (
"fmt"
"github.com/shenbowei/switch-ssh-go"
)
func main() {
user := "your device ssh name"
password := "your device ssh password"
ipPort := "ip:22"
//get the switch brand(vendor), include h3c,huawei and cisco
brand, err := ssh.GetSSHBrand(user, password, ipPort)
if err != nil {
fmt.Println("GetSSHBrand err:\n", err.Error())
}
fmt.Println("Device brand is:\n", brand)
//run the cmds in the switch, and get the execution results
cmds := make([]string, 0)
cmds = append(cmds, "dis clock")
cmds = append(cmds, "dis vlan")
result, err := ssh.RunCommands(user, password, ipPort, cmds...)
if err != nil {
fmt.Println("RunCommands err:\n", err.Error())
}
fmt.Println("RunCommands result:\n", result)
}
switch-ssh-go is released under the MIT License.