/gnmic

gnmic a gnmi CLI client and collector

Primary LanguageGoApache License 2.0Apache-2.0

github release Github all releases Go Report Doc build


gnmic (pronoun.: gee·en·em·eye·see) is a gNMI CLI client that provides full support for Capabilities, Get, Set and Subscribe RPCs with collector capabilities.

Documentation available at https://gnmic.kmrd.dev

Features

  • Full support for gNMI RPCs
    Every gNMI RPC has a corresponding command with all of the RPC options configurable by means of the local and global flags.
  • YANG-based path suggestions
    Your CLI magically becomes a YANG browser when gnmic is executed in prompt mode. In this mode the flags that take XPATH values will get auto-suggestions based on the provided YANG modules. In other words - voodoo magic 🤯
  • Multi-target operations
    Commands can operate on multiple gNMI targets for bulk configuration/retrieval/subscription.
  • File based configuration
    gnmic supports configurations provided in a file. The configuration options are consistent with the CLI flags.
  • Inspect raw gNMI messages
    With the prototext output format you can see the actual gNMI messages being sent/received. Its like having a gNMI looking glass!
  • (In)secure gRPC connection
    gNMI client supports both TLS and non-TLS transports so you can start using it in a lab environment without having to care about the PKI.
  • Dial-out telemetry
    The dial-out telemetry server is provided for Nokia SR OS.
  • Pre-built multi-platform binaries
    Statically linked binaries made in our release pipeline are available for major operating systems and architectures. Making installation a breeze!
  • Extensive and friendly documentation
    You won't be in need to dive into the source code to understand how gnimc works, our documentation site has you covered.

Quick start guide

Installation

sudo curl -sL https://github.com/karimra/gnmic/raw/master/install.sh | sudo bash

Capabilities request

gnmic -a 10.1.0.11:57400 -u admin -p admin --insecure capabilities

Get request

gnmic -a 10.1.0.11:57400 -u admin -p admin --insecure \
      get --path /state/system/platform

Set request

gnmic -a 10.1.0.11:57400 -u admin -p admin --insecure \
      set --update-path /configure/system/name \
          --update-value gnmic_demo

Subscribe request

gnmic -a 10.1.0.11:57400 -u admin -p admin --insecure \
      sub --path "/state/port[port-id=1/1/c1/1]/statistics/in-packets"

Prompt mode

The prompt mode is an interactive mode of the gnmic CLI client for user convenience.

# clone repository with YANG models (Openconfig example)
git clone https://github.com/openconfig/public
cd public

# Start gnmic in prompt mode and read in all the modules:

gnmic --file release/models \
      --dir third_party \
      --exclude ietf-interfaces \
      prompt