Getting clean output from Extreme switch CLI using Python
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎10-06-2017 02:35 PM
I am writing a python script to run some show commands on Extreme switches and storing output in a variable. I am able to accomplish that but the output is not as I would like. I am seeing the command and also switch name in my output but I would like to just see the result of my show command and nothing else.
This is what I am seeing:
print "ISC Port is: ", ISC
ISC Port is: sh vlan ISC | i Tag:
Tag: 1:1g
Ext-SW1.com.5 #
This is what I would like to see:
ISC Port is: Tag: 1:1g
Here is my code where I am reading output:
ISC = "sh vlan ISC | i Tag:"
tn.write(ISC + "\n")
idx, obj, output = tn.expect(["\.\r\n\r\*"], int(timeout))
print "ISC Port is: ", outputHow do I get rid of device name and my commands from output to show only output. I played around with "read_until" but can't seem to get it cleaned up. Example:
tn.write(ISC + "\n")
tn.read_until(".2 #")
idx, obj, output = tn.expect(["\.\r\n\r\*"], int(timeout))
print "ISC Port is: ", outputAny help will be appropriated.
This is what I am seeing:
print "ISC Port is: ", ISC
ISC Port is: sh vlan ISC | i Tag:
Tag: 1:1g
Ext-SW1.com.5 #
This is what I would like to see:
ISC Port is: Tag: 1:1g
Here is my code where I am reading output:
ISC = "sh vlan ISC | i Tag:"
tn.write(ISC + "\n")
idx, obj, output = tn.expect(["\.\r\n\r\*"], int(timeout))
print "ISC Port is: ", outputHow do I get rid of device name and my commands from output to show only output. I played around with "read_until" but can't seem to get it cleaned up. Example:
tn.write(ISC + "\n")
tn.read_until(".2 #")
idx, obj, output = tn.expect(["\.\r\n\r\*"], int(timeout))
print "ISC Port is: ", outputAny help will be appropriated.
7 REPLIES 7
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎10-30-2017 04:10 PM
It's important to be using a good regex tool to cut down time on developing the right regex. There are lot's of good tools out there. I paid for an app regexbuddy but there is also https://regex101.com/ that has python support and a very nice interface.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎10-09-2017 04:30 PM
I am already using regex to extract what I need but I was hoping there is a cleaner way. My regex is not pretty due to all extra junk I am scrapping.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎10-09-2017 04:15 PM
Since JSONRPC isn't available, I'd probably use regex to pull out the specific part you are looking for. I put together a quick example below:
import re output = 'sh vlan ISC | i Tag:\nTag: 1:1g\nExt-SW1.com.5 #' p = re.compile('(Tag:\s*\d:\dg?)') m = p.search(output) output = m.group(1) print output
This won't work for non-stacks, but it should give you an idea.
import re output = 'sh vlan ISC | i Tag:\nTag: 1:1g\nExt-SW1.com.5 #' p = re.compile('(Tag:\s*\d:\dg?)') m = p.search(output) output = m.group(1) print output
This won't work for non-stacks, but it should give you an idea.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Get Direct Link
- Report Inappropriate Content
‎10-09-2017 04:15 PM
And for what it returns:
bash-3.2$ python regex.py Tag: 1:1g
bash-3.2$ python regex.py Tag: 1:1g
