Skip to content

amitbashan/textfsm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TextFSM

Hex Version Hex Docs Ask DeepWiki

TextFSM is a template-based state machine designed to parse semi-structured text (such as CLI output) into structured data.

This is an Elixir implementation of the original TextFSM written in Python.

This implementation uses NimbleParsec to parse templates.

Demonstration

Given the template:

Value INTERFACE (\S+)
Value IP_ADDRESS (\d+\.\d+\.\d+\.\d+|unassigned)
Value STATUS (up|down|administratively down)
Value PROTOCOL (up|down)

Start
  ^${INTERFACE}\s+${IP_ADDRESS}\s+\w+\s+\w+\s+${STATUS}\s+${PROTOCOL} -> Record

and the input text:

Interface              IP-Address      OK? Method Status                Protocol
GigabitEthernet0/0     192.168.1.1     YES NVRAM  up                    up      
GigabitEthernet0/1     unassigned      YES NVRAM  administratively down down    
GigabitEthernet0/2     10.0.0.5        YES manual up                    up      
Loopback0              127.0.0.1       YES unset  up                    up

calling TextFSM.parse will return:

%{
  "INTERFACE" => ["GigabitEthernet0/0", "GigabitEthernet0/1",
   "GigabitEthernet0/2", "Loopback0"],
  "IP_ADDRESS" => ["192.168.1.1", "unassigned", "10.0.0.5", "127.0.0.1"],
  "PROTOCOL" => ["up", "down", "up", "up"],
  "STATUS" => ["up", "administratively down", "up", "up"]
}

Caveats

  • Comments in templates are yet to be supported
  • The template parser is strict regarding how many whitespaces you use (e.g. when defining values)

Installation

def deps do
  [
    {:textfsm, "~> 0.1.0"}
  ]
end

About

Template-based state machine for parsing semi-structured text

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages