You've already forked UGREEN-NAS
This commit is contained in:
87
root/usr/sbin/ugreen-led-netdev
Executable file
87
root/usr/sbin/ugreen-led-netdev
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
|
||||
###
|
||||
#
|
||||
# Options Section
|
||||
#
|
||||
###
|
||||
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
|
||||
###
|
||||
#
|
||||
# Variables Section
|
||||
#
|
||||
###
|
||||
|
||||
if [[ -f '/etc/ugreen-nas.conf' ]]; then
|
||||
source '/etc/ugreen-nas.conf'
|
||||
fi
|
||||
|
||||
NET_DEVICE="${1}"
|
||||
NET_SPEED_MIN=${NET_SPEED_MIN:='0'}
|
||||
NET_SPEED_MAX=${NET_SPEED_MAX:='10000'}
|
||||
NET_LED_COLOR_SPEED_MIN=${NET_LED_COLOR_SPEED_MIN:='255 0 0'}
|
||||
NET_LED_COLOR_SPEED_MAX=${NET_LED_COLOR_SPEED_MAX:='0 255 0'}
|
||||
|
||||
|
||||
###
|
||||
#
|
||||
# Function Section
|
||||
#
|
||||
###
|
||||
|
||||
function load_module () {
|
||||
local MODULE
|
||||
MODULE="${1}"
|
||||
if ! /usr/sbin/lsmod | /usr/bin/grep --quiet "${MODULE}"; then
|
||||
/usr/sbin/modprobe "${MODULE}"
|
||||
fi
|
||||
}
|
||||
|
||||
function set_net_led_color () {
|
||||
local IFS
|
||||
NET_SPEED=$(/usr/bin/cat "/sys/class/net/${NET_DEVICE}/speed")
|
||||
NET_SPEED_PERCENTAGE=$(/usr/bin/bc --mathlib <<< "(${NET_SPEED} - ${NET_SPEED_MIN}) / (${NET_SPEED_MAX} - ${NET_SPEED_MIN})")
|
||||
IFS=' '
|
||||
read -r RGB_RED_MIN RGB_GREEN_MIN RGB_BLUE_MIN <<< "${NET_LED_COLOR_SPEED_MIN}"
|
||||
read -r RGB_RED_MAX RGB_GREEN_MAX RGB_BLUE_MAX <<< "${NET_LED_COLOR_SPEED_MAX}"
|
||||
RGB_RED=$(/usr/bin/bc --mathlib <<< "scale=0; ${RGB_RED_MIN} + ${NET_SPEED_PERCENTAGE} * (${RGB_RED_MAX} - ${RGB_RED_MIN})/1")
|
||||
RGB_GREEN=$(/usr/bin/bc --mathlib <<< "scale=0; ${RGB_GREEN_MIN} + ${NET_SPEED_PERCENTAGE} * (${RGB_GREEN_MAX} - ${RGB_GREEN_MIN})/1")
|
||||
RGB_BLUE=$(/usr/bin/bc --mathlib <<< "scale=0; ${RGB_BLUE_MIN} + ${NET_SPEED_PERCENTAGE} * (${RGB_BLUE_MAX} - ${RGB_BLUE_MIN})/1")
|
||||
/usr/bin/echo "${RGB_RED} ${RGB_GREEN} ${RGB_BLUE}" > '/sys/class/leds/netdev/color'
|
||||
}
|
||||
|
||||
|
||||
###
|
||||
#
|
||||
# Runtime Environment
|
||||
#
|
||||
###
|
||||
|
||||
load_module 'ledtrig_netdev'
|
||||
|
||||
/usr/bin/echo 'netdev' > '/sys/class/leds/netdev/trigger'
|
||||
/usr/bin/echo "${NET_DEVICE}" > '/sys/class/leds/netdev/device_name'
|
||||
/usr/bin/echo '1' > '/sys/class/leds/netdev/link'
|
||||
if [[ "${NET_LED_TX_RX}" == 'true' ]]; then
|
||||
/usr/bin/echo '1' > '/sys/class/leds/netdev/tx'
|
||||
/usr/bin/echo '1' > '/sys/class/leds/netdev/rx'
|
||||
fi
|
||||
/usr/bin/echo '250' > '/sys/class/leds/netdev/interval'
|
||||
/usr/bin/echo '255 255 255' > '/sys/class/leds/netdev/color'
|
||||
/usr/bin/echo "${NET_LED_BRIGHTNESS}" > '/sys/class/leds/netdev/brightness'
|
||||
|
||||
while true; do
|
||||
GATEWAY=$(/usr/bin/ip route | /usr/bin/mawk '/default/ { print $3 }')
|
||||
if /usr/bin/ping -q -c '1' -W '1' "${GATEWAY}" &> '/dev/null'; then
|
||||
set_net_led_color
|
||||
else
|
||||
/usr/bin/echo '255 0 0' > '/sys/class/leds/netdev/color'
|
||||
fi
|
||||
/usr/bin/sleep '1m'
|
||||
done
|
||||
Reference in New Issue
Block a user