This app makes it easier to work with AirOS devices. So far, only monitoring is implemented.
Signed-off-by: Nick Hainke <vincent@systemli.org>
(cherry picked from commit e4a8d3fc29
)
lilik-openwrt-22.03
@ -0,0 +1,40 @@ | |||||
# SPDX-License-Identifier: GPL-2.0-only | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=ubnt-manager | |||||
PKG_VERSION:=1 | |||||
PKG_RELEASE:=$(AUTORELEASE) | |||||
PKG_MAINTAINER:=Nick Hainke <vincent@systemli.org> | |||||
PKG_LICENSE:=GPL-2.0-only | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/ubnt-manager | |||||
SECTION:=utils | |||||
CATEGORY:=Utilities | |||||
TITLE:=Managment app for Ubiquiti devices | |||||
PKGARCH:=all | |||||
EXTRA_DEPENDS:=dropbear | |||||
endef | |||||
define Package/ubnt-manager/description | |||||
Managment app for Ubiquiti devices. | |||||
endef | |||||
define Package/ubnt-manager/conffiles | |||||
/etc/config/ubnt-manager | |||||
endef | |||||
define Build/Compile | |||||
endef | |||||
define Package/ubnt-manager/install | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(INSTALL_BIN) ./files/ubnt-manager.sh $(1)/usr/bin/ubnt-manager | |||||
$(INSTALL_DIR) $(1)/etc/config | |||||
$(INSTALL_DATA) ./files/ubnt-manager.config $(1)/etc/config/ubnt-manager | |||||
endef | |||||
$(eval $(call BuildPackage,ubnt-manager)) |
@ -0,0 +1,9 @@ | |||||
config device 'sample_ap' # make sure to not use dashes in name | |||||
option target '192.168.1.20' | |||||
option username 'ubnt' | |||||
option password 'ubnt' | |||||
#config device 'sample_ap1' | |||||
# option target '10.31.81.21' | |||||
# option username 'ubnt' | |||||
# option password '...' |
@ -0,0 +1,79 @@ | |||||
#!/bin/sh | |||||
. /usr/share/libubox/jshn.sh | |||||
. /lib/functions.sh | |||||
log() { | |||||
local msg="$1" | |||||
logger -t ubnt-manager -s "$msg" | |||||
} | |||||
rexec() { | |||||
local target="$1" | |||||
local username="$2" | |||||
local password="$3" | |||||
local cmd="$4" | |||||
raw=$(DROPBEAR_PASSWORD="$password" ssh -y $username@$target "$cmd" 2>/dev/null) | |||||
ssh_result=$? | |||||
} | |||||
get_json_dump() { | |||||
local cmd="/usr/www/status.cgi" | |||||
rexec $* "$cmd" | |||||
echo $raw | |||||
} | |||||
handle_device() { | |||||
local device="${1//-/_}" # replace "-" with "_" | |||||
config_load ubnt-manager | |||||
config_get target "$device" target | |||||
config_get username "$device" username | |||||
config_get password "$device" password | |||||
ssh_result=0 | |||||
} | |||||
add_device_to_list() { | |||||
local device="$1" | |||||
device_list="$device_list $device" | |||||
} | |||||
list_devices() { | |||||
device_list="" | |||||
config_load ubnt-manager | |||||
config_foreach add_device_to_list device device_list | |||||
echo $device_list | |||||
} | |||||
usage() { | |||||
cat <<EOF | |||||
usage: ubnt-manager [command] | |||||
-j | --json Dump json info | |||||
-t | --target Target device | |||||
-l | --list-devices List all devices | |||||
-h | --help Brings up this menu | |||||
EOF | |||||
} | |||||
while [ "$1" != "" ]; do | |||||
case $1 in | |||||
-t | --target) | |||||
shift | |||||
target=$1 | |||||
handle_device $target | |||||
;; | |||||
-j | --json) | |||||
json=1 | |||||
;; | |||||
-l | --list-devices) | |||||
list_devices | |||||
;; | |||||
-h | --help) | |||||
usage | |||||
;; | |||||
esac | |||||
shift | |||||
done | |||||
if [ ! -z $json ]; then | |||||
get_json_dump $target $username $password | sed 's/Content-Type:\ application\/json//' | |||||
fi |