83 lines
2.3 KiB
Bash
Executable File
83 lines
2.3 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2019 Cloudfence - Julio Camargo (JCC)
|
|
# All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
#
|
|
# 1. Redistributions of source code must retain the above copyright notice,
|
|
# this list of conditions and the following disclaimer.
|
|
#
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
# AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
# AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
|
# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
# LEDs
|
|
LED1="/dev/led/led1"
|
|
LED2="/dev/led/led2"
|
|
LED3="/dev/led/led3"
|
|
|
|
# check if LEDs exists
|
|
if [ ! -e "$LED1" ];then
|
|
logger -t "APULED Plugin" "Error: LED device not exists"
|
|
fi
|
|
|
|
check_wan(){
|
|
# check internet connection
|
|
# ping f.root-servers.net
|
|
# LED2 - network notifications
|
|
# XXX fix this IP?
|
|
PING_CHECK=$(ping -t 3 -c 3 192.5.5.241 | grep "packet loss" | awk '{print $7}' | cut -d. -f1)
|
|
# ok
|
|
if [ "$PING_CHECK" -eq 0 ];then
|
|
echo "1" > $LED2
|
|
# latency
|
|
elif [ "$PING_CHECK" -gt 30 ] && [ "$PING_CHECK" -lt 100 ];then
|
|
echo "f3" > $LED2
|
|
# link down
|
|
elif [ "$PING_CHECK" -eq 100 ];then
|
|
echo "f1" > $LED2
|
|
fi
|
|
}
|
|
|
|
check_load(){
|
|
# check CPU idle
|
|
# LED1 - system notifications
|
|
CHK_IDLE=$(vmstat 1 2 | tail -1 | awk '{ print $19 }')
|
|
|
|
if [ "$CHK_IDLE" -lt "10" ];then
|
|
echo "f4" > $LED1
|
|
else
|
|
echo "1" > $LED1
|
|
fi
|
|
}
|
|
|
|
check_disk(){
|
|
# check Disk space
|
|
# LED3 - system notifications
|
|
DSK_FREE=$(df -kh / | tail -1 | awk '{ print 100-$5 }')
|
|
|
|
if [ "$DSK_FREE" -lt "10" ];then
|
|
echo "m...---..." > $LED3
|
|
else
|
|
echo "1" > $LED3
|
|
fi
|
|
}
|
|
|
|
# Main routine
|
|
check_wan
|
|
check_load
|
|
check_disk
|