summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/control1
-rw-r--r--op-mode-definitions/show-system.xml (renamed from op-mode-definitions/show-system-info.xml)23
-rwxr-xr-xsrc/op_mode/show_usb_serial.py57
3 files changed, 72 insertions, 9 deletions
diff --git a/debian/control b/debian/control
index 20423aee1..7c1555416 100644
--- a/debian/control
+++ b/debian/control
@@ -34,6 +34,7 @@ Depends: python3,
python3-zmq,
python3-jmespath,
python3-xmltodict,
+ python3-pyudev,
bsdmainutils,
cron,
etherwake,
diff --git a/op-mode-definitions/show-system-info.xml b/op-mode-definitions/show-system.xml
index 61c947bbe..b7f56ae20 100644
--- a/op-mode-definitions/show-system-info.xml
+++ b/op-mode-definitions/show-system.xml
@@ -7,7 +7,6 @@
<help>Show system information</help>
</properties>
<children>
-
<node name="connections">
<properties>
<help>Show active network connections on the system</help>
@@ -50,21 +49,18 @@
</node>
</children>
</node>
-
<leafNode name= "integrity">
<properties>
<help>Checks overall system integrity</help>
</properties>
<command>sudo ${vyos_op_scripts_dir}/system_integrity.py</command>
</leafNode>
-
<leafNode name="kernel-messages">
<properties>
<help>Show messages in kernel ring buffer</help>
</properties>
<command>sudo dmesg</command>
</leafNode>
-
<node name="login">
<properties>
<help>Show user accounts</help>
@@ -104,7 +100,6 @@
</node>
</children>
</node>
-
<node name="memory">
<properties>
<help>Show system memory usage</help>
@@ -125,7 +120,6 @@
</leafNode>
</children>
</node>
-
<node name="processes">
<properties>
<help>Show system processes</help>
@@ -152,21 +146,32 @@
</leafNode>
</children>
</node>
-
<leafNode name="storage">
<properties>
<help>Show filesystem usage</help>
</properties>
<command>df -h -x squashfs</command>
</leafNode>
-
<leafNode name="uptime">
<properties>
<help>Show how long the system has been up</help>
</properties>
<command>uptime</command>
</leafNode>
-
+ <node name="usb">
+ <properties>
+ <help>Show information about Universal Serial Bus (USB)</help>
+ </properties>
+ <command>/usr/bin/lsusb -t</command>
+ <children>
+ <leafNode name="serial">
+ <properties>
+ <help>Show information about connected USB serial ports</help>
+ </properties>
+ <command>${vyos_op_scripts_dir}/show_usb_serial.py</command>
+ </leafNode>
+ </children>
+ </node>
</children>
</node>
</children>
diff --git a/src/op_mode/show_usb_serial.py b/src/op_mode/show_usb_serial.py
new file mode 100755
index 000000000..776898c25
--- /dev/null
+++ b/src/op_mode/show_usb_serial.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2018 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# 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 os
+
+from jinja2 import Template
+from pyudev import Context, Devices
+from sys import exit
+
+OUT_TMPL_SRC = """Device Model Vendor
+------ ------ ------
+{%- for d in devices %}
+{{ "%-16s" | format(d.device) }} {{ "%-19s" | format(d.model)}} {{d.vendor}}
+{%- endfor %}
+
+"""
+
+data = {
+ 'devices': []
+}
+
+
+base_directory = '/dev/serial/by-bus'
+if not os.path.isdir(base_directory):
+ print("No USB to serial converter connected")
+ exit(0)
+
+context = Context()
+for root, dirs, files in os.walk(base_directory):
+ for basename in files:
+ os.path.join(root, basename)
+ device = Devices.from_device_file(context, os.path.join(root, basename))
+ tmp = {
+ 'device': basename,
+ 'model': device.properties.get('ID_MODEL'),
+ 'vendor': device.properties.get('ID_VENDOR_FROM_DATABASE')
+ }
+ data['devices'].append(tmp)
+
+data['devices'] = sorted(data['devices'], key = lambda i: i['device'])
+tmpl = Template(OUT_TMPL_SRC)
+print(tmpl.render(data))
+
+exit(0)