Netrasp is a package that communicates to network devices over SSH. It takes care of handling the pty terminal of network devices giving you an API with common actions such as executing commands and configuring devices.
Netrasp is in pre release mode so some parts of the API might change before the initial version is released.
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/networklore/netrasp/pkg/netrasp"
)
func main() {
device, err := netrasp.New("switch1",
netrasp.WithUsernamePassword("my_user", "my_password123"),
netrasp.WithDriver("ios"),
)
if err != nil {
log.Fatalf("unable to create client: %v", err)
}
ctx, cancelOpen := context.WithTimeout(context.Background(), 2000*time.Millisecond)
defer cancelOpen()
err = device.Dial(ctx)
if err != nil {
fmt.Printf("unable to connect: %v\n", err)
return
}
defer device.Close(context.Background())
ctx, cancelRun := context.WithTimeout(context.Background(), 300*time.Millisecond)
defer cancelRun()
output, err := device.Run(ctx, "show running")
if err != nil {
fmt.Printf("unable to run command: %v\n", err)
return
}
fmt.Println(output)
}
The initial release of Netrasp comes with support for the following platforms:
- Cisco IOS: netrasp.WithDriver("ios")
- Cisco NXOS: netrasp.WithDriver("nxos")
- Cisco ASA: netrasp.WithDriver("asa")
- Nokia SR OS: netrasp.WithDriver("sros")
You can use Netrasp as a package as in the example above of combine it with something like Gornir to get the same type of experience you'd have from using Netmiko and Nornir in the Python world.
Netrasp was created by Patrick Ogenstad. Special thanks to David Barroso for providing feedback and recommendations of the structure and code.