diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-08-03 17:08:47 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-08-03 17:08:47 +0200 |
commit | ee45fcf5f5342d40b5dcd39429a4201c93a49b4c (patch) | |
tree | 4c8ed5228c087f4bdfeacf2aa5d954a63e544e36 /src/op_mode/lldp_op.py | |
parent | 3e657ba2acf68c9adc1426cc1fcfeefb848cc8d2 (diff) | |
download | vyos-1x-ee45fcf5f5342d40b5dcd39429a4201c93a49b4c.tar.gz vyos-1x-ee45fcf5f5342d40b5dcd39429a4201c93a49b4c.zip |
lldp: op-mode: T2323: "show lldp neighbors detail" only works when service runs
The problem exists when LLDP is not configured but one wants to run the detail
command. Running "show lldp neighbors" is not possible when LLDP is not running.
This case is already handled for "show lldp neighbors" and has been extended
for "show lldp neighbors detail".
Diffstat (limited to 'src/op_mode/lldp_op.py')
-rwxr-xr-x | src/op_mode/lldp_op.py | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/op_mode/lldp_op.py b/src/op_mode/lldp_op.py index 5d48e3210..0df6749aa 100755 --- a/src/op_mode/lldp_op.py +++ b/src/op_mode/lldp_op.py @@ -14,19 +14,19 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. - import argparse import jinja2 -from xml.dom import minidom from sys import exit from tabulate import tabulate +from xml.dom import minidom -from vyos.util import popen +from vyos.util import cmd from vyos.config import Config parser = argparse.ArgumentParser() parser.add_argument("-a", "--all", action="store_true", help="Show LLDP neighbors on all interfaces") +parser.add_argument("-d", "--detail", action="store_true", help="Show detailes LLDP neighbor information on all interfaces") parser.add_argument("-i", "--interface", action="store", help="Show LLDP neighbors on specific interface") # Please be careful if you edit the template. @@ -40,10 +40,8 @@ Device ID Local Proto Cap Platform Port ID {% endfor -%} """ -def _get_neighbors(): - command = '/usr/sbin/lldpcli -f xml show neighbors' - out,_ = popen(command) - return out +def get_neighbors(): + return cmd('/usr/sbin/lldpcli -f xml show neighbors') def extract_neighbor(neighbor): """ @@ -148,12 +146,17 @@ if __name__ == '__main__': exit(0) if args.all: - neighbors = minidom.parseString(_get_neighbors()) + neighbors = minidom.parseString(get_neighbors()) for neighbor in neighbors.getElementsByTagName('interface'): tmp['neighbors'].append( extract_neighbor(neighbor) ) + elif args.detail: + out = cmd('/usr/sbin/lldpctl -f plain') + print(out) + exit(0) + elif args.interface: - neighbors = minidom.parseString(_get_neighbors()) + neighbors = minidom.parseString(get_neighbors()) for neighbor in neighbors.getElementsByTagName('interface'): # check if neighbor appeared on proper interface if neighbor.getAttribute('name') == args.interface: |