Forum Discussion

mjensen's avatar
Icon for Employee rankEmployee
17 days ago

Lua Script from the Restorepoint Automation PowerHour

This is an annotated version of the Lua device control script that was shown in last week's PowerHour about Restorepoint automation.

The objective was to connect to a Cisco IOS device, identify any GigabitEthernet interfaces whose current MTU was >1500, and then configure those interfaces to use an MTU of 1500.  We can do this by running the "show interfaces" command and processing the output. Here is the script I described during the PowerHour:

timeout (10)

-- Run the "show interfaces" command, collect the output, and store that output
-- as a list of text lines.
sendget("show interfaces","#")
output = before()

-- Start looping through the output lines.
for i,line in pairs(lines) do

-- Look for lines like "InterfaceName is up|down, line protocol is up|down".
   if line:match(".* is [a-z]+, line protocol is [a-z]+") then

-- When we find one, save the interface name as intf.
      intf=line:match("^(.*) is [a-z]+, line protocol is [a-z]+")
-- If we find a line with MTU data, convert the MTU to a numeric value and save it.
   if line:match("MTU") then
      mtu = tonumber(line:match("MTU ([0-9]+) bytes"))
-- Check if the interface meets our criteria of being a GigabitEthernet interface
-- with a current MTU above 1500.
      if intf:match("GigabitEthernet") and mtu > 1500 then

-- If it is, execute the Cisco IOS commands to change the configuration. We use a local
-- variable 'in_config_mode' to avoid going in/out of config mode multiple times.
         if not in_config_mode then    
            sendget("conf terminal","#")
            in_config_mode = true
         sendget("int "..intf,"#")
         sendget("mtu 1500","#")
         print("Changed MTU on "..intf.." from "..mtu.." to 1500 bytes")

-- Finally, exit from config mode if needed.
if in_config_mode then
No RepliesBe the first to reply