Gomiko

Build Status
GolangCI
published

Gomiko is a Go implementation of netmiko. It serves as multi-vendor networking SDK that helps communicate and execute commands via an interactive shell
without needing to care about handling device prompts and terminal modes.

Supports

  • Cisco IOS
  • Cisco IOS XR
  • Cisco ASA
  • Cisco NX-OS
  • Mikrotik RouterOS
  • Arista EOS
  • Juniper JunOS

Installation

get gomiko pkg: go get -u github.com/Ali-aqrabawi/gomiko/pkg.

Examples :

import (
	"fmt"
	"log"
	"github.com/Ali-aqrabawi/gomiko/pkg"
)

func main() {
	
     device, err := gomiko.NewDevice("192.168.1.1", "admin", "password", "cisco_ios", 22)
     
     if err != nil {
     	log.Fatal(err)
     }
     
     //Connect to device
     if err := device.Connect(); err != nil {
     	log.Fatal(err)
     }
     
     // send command
     output1, _ := device.SendCommand("show vlan")
     
     // send a set of config commands
     commands := []string{"vlan 120", "name v120"}
     output2, _ := device.SendConfigSet(commands)
     
     device.Disconnect()
     
     fmt.Println(output1)
     fmt.Println(output2)
 
}

create device with enable password:

import (
	"fmt"
	"log"
	"github.com/Ali-aqrabawi/gomiko/pkg"
)

func main() {
	
     device, err := gomiko.NewDevice("192.168.1.1", "admin", "password", "cisco_ios", 22, gomiko.SecretOption("enablePass"))
     
     if err != nil {
     	log.Fatal(err)
     }     

}

create device with custom timeout:

import (
	"fmt"
	"log"
	"github.com/Ali-aqrabawi/gomiko/pkg"
)

func main() {
	
     device, err := gomiko.NewDevice("192.168.1.1", "admin", "password", "cisco_ios", 22, gomiko.SecretOption("enablePass"), gomiko.TimeoutOption(10))
     
     if err != nil {
     	log.Fatal(err)
     }     

}
View code on GitHub

Code Exchange Community

Get help, share code, and collaborate with other developers in the Code Exchange community.View Community
Disclaimer:
Cisco provides Code Exchange for convenience and informational purposes only, with no support of any kind. This page contains information and links from third-party websites that are governed by their own separate terms. Reference to a project or contributor on this page does not imply any affiliation with or endorsement by Cisco.