1

I am trying to create a TextFSM template to extract data from certain lines in order.

Raw Data

Mod Ports Card Type                              Model              Serial No.
--- ----- -------------------------------------- ------------------ -----------
  1   24  CEF720 24 port 1000mb SFP              SS-X6724-SFP       ABC12312253
  2   48  CEF720 48 port 10/100/1000mb Ethernet  SS-X6748-GE-TX     ABC12312FW2
  5    2  Supervisor Engine 720 (Active)         SS-SUP720-3B       ABC12312X5B
  6    2  Supervisor Engine 720 (Hot)            SS-SUP720-3B       ABC123129Y5

Mod MAC addresses                       Hw    Fw           Sw           Status
--- ---------------------------------- ------ ------------ ------------ -------
  1  ffff.4a3e.ffff to ffff.4a3e.ffff   3.1   15.2(18r)S1  18.1(2)SY16  Ok
  2  ffff.584b.ffff to ffff.584b.ffff   2.6   15.2(14r)S5  18.1(2)SY16  Ok
  5  ffff.9df6.ffff to ffff.9df6.ffff   5.3   9.5(4)       18.1(2)SY16  Ok
  6  ffff.c848.ffff to ffff.c848.ffff   5.4   9.4(2)       18.1(2)SY16  Ok

Mod  Sub-Module                  Model              Serial       Hw     Status
---- --------------------------- ------------------ ----------- ------- -------
  1  Centralized Forwarding Card SS-F6700-CFC       ABC12312NDH  4.0    Ok
  2  Centralized Forwarding Card SS-F6700-CFC       ABC12312LKR  4.0    Ok
  5  Policy Feature Card 3       SS-F6K-PFC3B       ABC12312B3D  2.5    Ok
  5  MSFC3 Daughterboard         SS-SUP720          ABC12312B03  2.11   Ok
  6  Policy Feature Card 3       SS-F6K-PFC3B       ABC123123B6  2.3    Ok
  6  MSFC3 Daughterboard         SS-SUP720          ABC1231254K  3.0    Ok

Mod  Online Diag Status 
---- -------------------
  1  Pass
  2  Pass
  5  Pass
  6  Pass

Attempting to Get

[
  {
    "CARDTYPE": "CEF720 24 port 1000mb SFP",
    "FW": "15.2(18r)S1",
    "HW": "3.1",
    "MODEL": "SS-X6724-SFP",
    "MODULE": "1",
    "PORT": "24",
    "SERIAL": "ABC12312253",
    "STATUS": "Ok",
    "SW": "18.1(2)SY16"
  },
  {
    "CARDTYPE": "CEF720 48 port 10/100/1000mb Ethernet",
    "FW": "15.2(14r)S5",
    "HW": "2.6",
    "MODEL": "SS-X6748-GE-TX",
    "MODULE": "2",
    "PORT": "48",
    "SERIAL": "ABC12312FW2",
    "STATUS": "Ok",
    "SW": "18.1(2)SY16"
  },
  {
    "CARDTYPE": "Supervisor Engine 720 (Active)",
    "FW": "9.5(4)",
    "HW": "5.3",
    "MODEL": "SS-SUP720-3B",
    "MODULE": "5",
    "PORT": "2",
    "SERIAL": "ABC12312X5B",
    "STATUS": "Ok",
    "SW": "18.1(2)SY16"
  },
  {
    "CARDTYPE": "Supervisor Engine 720 (Hot)",
    "FW": "9.4(2)",
    "HW": "5.4",
    "MODEL": "SS-SUP720-3B",
    "MODULE": "6",
    "PORT": "2",
    "SERIAL": "ABC123129Y5",
    "STATUS": "Ok",
    "SW": "18.1(2)SY16"
  }
]

Actual Output

[
  {
    "CARDTYPE": "CEF720 24 port 1000mb SFP",
    "FW": "15.2(18r)S1",
    "HW": "3.1",
    "MODEL": "SS-X6724-SFP",
    "MODULE": "1",
    "PORT": "24",
    "SERIAL": "ABC12312253",
    "STATUS": "Ok",
    "SW": "18.1(2)SY16"
  },
  {
    "CARDTYPE": "",
    "FW": "15.2(14r)S5",
    "HW": "2.6",
    "MODEL": "",
    "MODULE": "",
    "PORT": "",
    "SERIAL": "",
    "STATUS": "Ok",
    "SW": "18.1(2)SY16"
  },
  {
    "CARDTYPE": "",
    "FW": "9.5(4)",
    "HW": "5.3",
    "MODEL": "",
    "MODULE": "",
    "PORT": "",
    "SERIAL": "",
    "STATUS": "Ok",
    "SW": "18.1(2)SY16"
  },
  {
    "CARDTYPE": "",
    "FW": "9.4(2)",
    "HW": "5.4",
    "MODEL": "",
    "MODULE": "",
    "PORT": "",
    "SERIAL": "",
    "STATUS": "Ok",
    "SW": "18.1(2)SY16"
  }
]

I used the below template to get the output. As you can see the CARDTYPE, MODEL, MODULE, PORT, SERIAL are empty where the other information was picked up correctly. TextFSM Template

Value MODULE (\d+)
Value PORT (\d+)
Value CARDTYPE (.+?)
Value MODEL (\S+)
Value SERIAL (\w+)
Value HW (\S+)
Value FW (\S+)
Value SW (\S+)
Value STATUS (\S+)

Start
  ^Mod\s+Ports\s+Card\s+Type\s+Model\s+Serial -> Info  

Info
  ^\s+${MODULE}\s+${PORT}\s+${CARDTYPE}\s+${MODEL}\s+${SERIAL}\s*$$ -> Status

Status
  ^\s+\d+\s+(?:\S+\s+to\s+\S+)\s+${HW}\s+${FW}\s+${SW}\s+${STATUS}\s*$$ -> Continue.Record
  ^Mod\s+Sub-Module -> Start

End
gh0st
  • 402
  • 5
  • 13

0 Answers0