summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkroy <kroy@kroy.io>2020-06-08 09:51:03 -0500
committerkroy <kroy@kroy.io>2020-06-08 10:01:19 -0500
commitb046356bed77f7014d2ff14100c8095636c46101 (patch)
tree93b85f33098306d49a61ebd3f73e51bab88a4da3
parentd76776ac8732694e154f73a3b3fe1b742ede6d86 (diff)
downloadvyos-1x-b046356bed77f7014d2ff14100c8095636c46101.tar.gz
vyos-1x-b046356bed77f7014d2ff14100c8095636c46101.zip
T2559: Make the sensors automatically load necessary modules
-rw-r--r--op-mode-definitions/show-environment.xml2
-rwxr-xr-xsrc/op_mode/show_sensors.py27
2 files changed, 28 insertions, 1 deletions
diff --git a/op-mode-definitions/show-environment.xml b/op-mode-definitions/show-environment.xml
index 88e1718aa..95b658785 100644
--- a/op-mode-definitions/show-environment.xml
+++ b/op-mode-definitions/show-environment.xml
@@ -12,7 +12,7 @@
<help>Show hardware monitoring results</help>
</properties>
<!-- Linux always adds "hypervisor" to CPU flags -->
- <command>if ! grep -q hypervisor /proc/cpuinfo; then /usr/bin/sensors --no-adapter; else echo "VyOS running under hypervisor, no sensors available"; fi</command>
+ <command>if ! grep -q hypervisor /proc/cpuinfo; then ${vyos_libexec_dir}/vyos-sudo.py ${vyos_op_scripts_dir}/show_sensors.py; else echo "VyOS running under hypervisor, no sensors available"; fi</command>
</leafNode>
</children>
</node>
diff --git a/src/op_mode/show_sensors.py b/src/op_mode/show_sensors.py
new file mode 100755
index 000000000..6ae477647
--- /dev/null
+++ b/src/op_mode/show_sensors.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+import re
+import sys
+from vyos.util import popen
+from vyos.util import DEVNULL
+output,retcode = popen("sensors --no-adapter", stderr=DEVNULL)
+if retcode == 0:
+ print (output)
+ sys.exit(0)
+else:
+ output,retcode = popen("sensors-detect --auto",stderr=DEVNULL)
+ match = re.search(r'#----cut here----(.*)#----cut here----',output, re.DOTALL)
+ if match:
+ for module in match.group(0).split('\n'):
+ if not module.startswith("#"):
+ popen("modprobe {}".format(module.strip()))
+ output,retcode = popen("sensors --no-adapter", stderr=DEVNULL)
+ if retcode == 0:
+ print (output)
+ sys.exit(0)
+
+
+print ("No sensors found")
+sys.exit(1)
+
+