mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
b764cb9e5b
This will show detailed status for all devices/interfaces Signed-off-by: Felix Fietkau <nbd@nbd.name>
71 lines
1.0 KiB
Bash
71 lines
1.0 KiB
Bash
#!/bin/sh
|
|
. /usr/share/libubox/jshn.sh
|
|
|
|
dev_status() {
|
|
tc -s qdisc sh dev "$1" root
|
|
echo
|
|
}
|
|
|
|
common_status() {
|
|
json_get_vars ifname ingress egress
|
|
|
|
[ -n "$ifname" ] || return
|
|
|
|
[ "$egress" -gt 0 ] && {
|
|
echo "egress status:"
|
|
dev_status "$ifname"
|
|
}
|
|
[ "$ingress" -gt 0 ] && {
|
|
echo "ingress status:"
|
|
dev_status "$(printf %.16s "ifb-$ifname")"
|
|
}
|
|
}
|
|
|
|
is_active() {
|
|
json_get_vars active
|
|
|
|
[ "${active:-0}" -gt 0 ]
|
|
}
|
|
|
|
device_status() {
|
|
local name="$2"
|
|
|
|
json_select "$name"
|
|
|
|
if is_active; then
|
|
status="active"
|
|
else
|
|
status="not found"
|
|
fi
|
|
|
|
echo "===== device $name: $status ====="
|
|
|
|
is_active && common_status
|
|
|
|
json_select ..
|
|
}
|
|
|
|
interface_status() {
|
|
local name="$2"
|
|
|
|
json_select "$name"
|
|
|
|
if is_active; then
|
|
status="active"
|
|
elif ubus -S -t 0 wait_for "network.interface.$name"; then
|
|
status="down"
|
|
else
|
|
status="not found"
|
|
fi
|
|
|
|
echo "===== interface $name: $status ====="
|
|
|
|
is_active && common_status
|
|
|
|
json_select ..
|
|
}
|
|
|
|
json_load "$(ubus call qosify status)"
|
|
json_for_each_item device_status devices
|
|
json_for_each_item interface_status interfaces
|