[RFC] nodewatcher: consolidate uci calls

Tobias Klaus tk+ff at meskal.net
Di Jul 4 00:37:18 CEST 2017


* this makes it easier to reuse on decentral gateways
* fix errors if nodewatcher is not run on openwrt/lede
---
 .../fff/fff-nodewatcher/files/usr/sbin/nodewatcher | 29 ++++++++++++++--------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
index f9d6e65..296b421 100755
--- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
+++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
@@ -20,6 +20,17 @@ else
     . "$(dirname "$0")/nodewatcher_config"
 fi
 
+if [ -f /etc/config/system ];then
+    description="$(uci get system. at system[0].description)"
+    latitude="$(uci get system. at system[0].latitude)"
+    longitude="$(uci get system. at system[0].longitude)"
+    position_comment="$(uci get system. at system[0].position_comment)"
+    contact="$(uci get system. at system[0].contact)"
+    hood="$(uci -q get "system. at system[0].hood")"
+else
+    . "$(dirname "$0")/system_config"
+fi
+
 if [ "$SCRIPT_ERROR_LEVEL" -gt "1" ]; then
     err() {
         echo "$1" >> "$SCRIPT_LOGFILE"
@@ -56,20 +67,15 @@ crawl() {
     #Get system data from other locations
     err "$(date): Collecting basic system status data"
     hostname="$(cat /proc/sys/kernel/hostname)"
-    description="$(uci get system. at system[0].description)"
     if [ -n "$description" ]; then
         description="<description><![CDATA[$description]]></description>"
     fi
-    latitude="$(uci get system. at system[0].latitude)"
-    longitude="$(uci get system. at system[0].longitude)"
     if [ -n "$longitude" -a -n "$latitude" ]; then
         geo="<geo><lat>$latitude</lat><lng>$longitude</lng></geo>";
     fi
-    position_comment="$(uci get system. at system[0].position_comment)"
     if [ -n "$position_comment" ]; then
         position_comment="<position_comment><![CDATA[$position_comment]]></position_comment>"
     fi
-    contact="$(uci get system. at system[0].contact)"
     if [ -n "$contact" ]; then
         contact="<contact>$contact</contact>"
     fi
@@ -86,7 +92,7 @@ crawl() {
         /system type/ { printf "<chipset>"$2"</chipset>" }
         /platform/ { printf "<chipset>"$2"</chipset>" }
     ' /proc/cpuinfo)
-    model="<model>$(cat /var/sysinfo/model)</model>"
+    test -f /var/sysinfo/model && model="<model>$(cat /var/sysinfo/model)</model>"
     local_time="$(date +%s)"
     load=$(awk '{ printf "<loadavg>"$3"</loadavg><processes>"$4"</processes>" }' /proc/loadavg)
 
@@ -117,7 +123,7 @@ crawl() {
     #DISTRIB_CODENAME="attitude_adjustment"
     #DISTRIB_TARGET="atheros/generic"
     #DISTRIB_DESCRIPTION="OpenWrt Attitude Adjustment 12.09-rc1"
-    . /etc/openwrt_release
+    test -f /etc/openwrt_release && . /etc/openwrt_release
     distname=$DISTRIB_ID
     distversion=$DISTRIB_RELEASE
 
@@ -126,7 +132,8 @@ crawl() {
     #BUILD_DATE="build date: Di 29. Jan 19:33:34 CET 2013"
     #OPENWRT_CORE_REVISION="35298"
     #OPENWRT_FEEDS_PACKAGES_REVISION="35298"
-    . /etc/firmware_release
+
+    test -f /etc/firmware_release  && . /etc/firmware_release
 
     SYSTEM_DATA="<status>online</status>"
     SYSTEM_DATA=$SYSTEM_DATA"$status_text"
@@ -135,10 +142,10 @@ crawl() {
     SYSTEM_DATA=$SYSTEM_DATA"${geo}"
     SYSTEM_DATA=$SYSTEM_DATA"${position_comment}"
     SYSTEM_DATA=$SYSTEM_DATA"${contact}"
-    if [ "$(uci -q get "system. at system[0].hood")" ] 
+    if [ "${hood}" ]
     then                                                                                                                         
-        SYSTEM_DATA=$SYSTEM_DATA"<hood>$(uci -q get "system. at system[0].hood")</hood>"                                            
-    fi  
+        SYSTEM_DATA=$SYSTEM_DATA"<hood>${hood}</hood>"
+    fi
     SYSTEM_DATA=$SYSTEM_DATA"<distname>$distname</distname>"
     SYSTEM_DATA=$SYSTEM_DATA"<distversion>$distversion</distversion>"
     SYSTEM_DATA=$SYSTEM_DATA"$cpu"
-- 
2.13.2



Mehr Informationen über die Mailingliste franken-dev