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 |