Browse Source

ubnt-manager: add ubnt-manager

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
Nick Hainke 2 years ago
committed by Etienne Champetier
parent
commit
64029f426f
3 changed files with 128 additions and 0 deletions
  1. +40
    -0
      utils/ubnt-manager/Makefile
  2. +9
    -0
      utils/ubnt-manager/files/ubnt-manager.config
  3. +79
    -0
      utils/ubnt-manager/files/ubnt-manager.sh

+ 40
- 0
utils/ubnt-manager/Makefile View File

@ -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))

+ 9
- 0
utils/ubnt-manager/files/ubnt-manager.config View File

@ -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 '...'

+ 79
- 0
utils/ubnt-manager/files/ubnt-manager.sh View File

@ -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

Loading…
Cancel
Save