luci-app-serverchan: bump to 1.30-42

This commit is contained in:
CN_SZTL 2020-02-11 23:44:19 +08:00
parent 7a5f40bf50
commit 06a4190ed2
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
3 changed files with 251 additions and 240 deletions

View File

@ -9,7 +9,7 @@ LUCI_TITLE:=LuCI support for serverchan
LUCI_DEPENDS:=+iputils-arping +curl
LUCI_PKGARCH:=all
PKG_NAME:=luci-app-serverchan
PKG_VERSION:=1.29
PKG_VERSION:=1.30
PKG_RELEASE:=42
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -1,5 +1,5 @@
local nt = require "luci.sys".net
local log=require"nixio.fs"
local fs=require"nixio.fs"
local e=luci.model.uci.cursor()
local net = require "luci.model.network".init()
local sys = require "luci.sys"
@ -12,7 +12,6 @@ translate("「Server酱」英文名「ServerChan」是一款从服务器
.. [[</a>]]
)
m:section(SimpleSection).template = "serverchan/serverchan_status"
s=m:section(NamedSection,"serverchan","serverchan",translate("Server酱设置"))
s:tab("tab_basic", translate("基本设置"))
@ -35,6 +34,10 @@ device_name=s:taboption("tab_basic", Value,"device_name",translate('本设备名
device_name.rmempty=true
device_name.description = translate("在推送信息标题中会标识本设备名称,用于区分推送信息的来源设备")
sleeptime=s:taboption("tab_basic", Value,"sleeptime",translate('检测时间间隔'))
sleeptime.default = "60"
sleeptime.description = translate("越短的时间灵敏度越高,但会占用更多的系统资源")
debuglevel=s:taboption("tab_basic", ListValue,"debuglevel",translate("日志调试等级"))
debuglevel:value("",translate("关闭"))
debuglevel:value("1",translate("简单"))
@ -47,6 +50,7 @@ device_aliases.rmempty = true
device_aliases.optional = true
device_aliases.description = translate("<br/> 请输入设备 MAC 和设备别名,用“-”隔开,如:<br/> XX:XX:XX:XX:XX:XX-我的手机")
local logfile = "/tmp/serverchan/serverchan.log"
e=s:taboption("log",TextValue,"log")
e:depends({debuglevel="1"})
@ -55,11 +59,20 @@ e.rows=26
e.wrap="off"
e.readonly=true
e.cfgvalue=function(s,s)
return log.readfile("/tmp/serverchan/server_chan.log")or""
return fs.readfile(logfile)or""
end
e.write=function(e,e,e)
end
e=s:taboption("log", Button,translate(""))
e.inputtitle=translate("清理日志")
e.inputstyle = "clean_log"
function e.write(self, section)
luci.sys.call("cbi.clean_log")
fs.writefile(logfile, "")
end
a=s:taboption("tab_basic2", ListValue,"serverchan_ipv4",translate("ipv4 变动通知"))
a.default="disable"
a:value("0",translate("关闭"))
@ -146,6 +159,14 @@ e.default=12
e.datatype=uinteger
e:depends("send_mode","1")
e=s:taboption("tab_basic3", ListValue,"regular_time_2",translate("第一次发送时间"))
for t=0,23 do
e:value(t,translate("每天"..t..""))
end
e.default=8
e.datatype=uinteger
e:depends("send_mode","2")
e=s:taboption("tab_basic3", ListValue,"interval_time",translate("发送间隔"))
for t=1,23 do
e:value(t,translate(t.."小时"))
@ -188,6 +209,13 @@ luci.sys.call("cbi.apply")
luci.sys.call("/usr/bin/serverchan/serverchan send &")
end
up_timeout=s:taboption("tab_basic4", Value,"up_timeout",translate('设备上线检测超时'))
up_timeout.default = "2"
down_timeout=s:taboption("tab_basic4", Value,"down_timeout",translate('设备离线检测超时'))
down_timeout.default = "10"
down_timeout.description = translate("如果遇到设备频繁离线,可以把超时时间设置长一些")
sheep=s:taboption("tab_basic4", ListValue,"serverchan_sheep",translate("免打扰时段设置"),translate("在指定整点时间段内,暂停推送消息<br/>免打扰时间中,定时推送也会被阻止。"))
sheep:value("0",translate("关闭"))
sheep:value("1",translate("模式一:脚本挂起,延迟发送"))
@ -242,6 +270,7 @@ for _, iface in ipairs(ifaces) do
n:value(iface, ((#nets > 0) and "%s (%s)" % {iface, nets} or iface))
end
end
local apply = luci.http.formvalue("cbi.apply")
if apply then
io.popen("/etc/init.d/serverchan start")

View File

@ -4,36 +4,23 @@
function get_config(){
if [ "$1" ] ;then
serverchan_config=`uci show serverchan`
if ( echo $serverchan_config | grep -q -i $1 ); then echo `uci get serverchan.serverchan.$1`;else echo "";fi
if ( echo $serverchan_config | grep -q -i $1 ); then echo `uci get serverchan.serverchan.$1`;else echo "" >/dev/null;fi
fi
}
function read_config(){
debuglevel=`get_config debuglevel`
if [ -z "$debuglevel" ] ; then logfile="/dev/null";else logfile="/tmp/serverchan/server_chan.log";fi
if [ -z "$debuglevel" ] ; then logfile="/dev/null";else logfile="/tmp/serverchan/serverchan.log";fi
serverchan_enable=`get_config serverchan_enable`
if [ -z "$serverchan_enable" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取程序开关 " >> ${logfile};fi
#if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then exit;fi
serverchan_sckey=`get_config sckey`
if [ -z "$serverchan_sckey" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 SCKEY" >> ${logfile};fi
if [ -z "$serverchan_sckey" ] && [ "${#serverchan_sckey}" -lt "50" ] ; then echo "`date "+%H:%M:%S"` 【!!!】请填入正确的 SCKEY " >> ${logfile};fi
if [ -z "$serverchan_sckey" ] && [ "${#serverchan_sckey}" -lt "50" ] ; then exit;fi
serverchan_ipv4=`get_config serverchan_ipv4`
if [ -z "$serverchan_ipv4" ] || [ "$serverchan_ipv4" -ne "0" ] && [ "$serverchan_ipv4" -ne "1" ] && [ "$serverchan_ipv4" -ne "2" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv4 变化通知 开关" >> ${logfile};fi
ipv4_interface=`get_config ipv4_interface`
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -eq "1" ] && [ -z "$ipv4_interface" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv4 IP 接口信息" >> ${logfile};fi
ipv4_URL=`get_config ipv4_URL`
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -eq "2" ] && [ -z "$ipv4_URL" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv4 IP URL信息" >> ${logfile};fi
serverchan_ipv6=`get_config serverchan_ipv6`
if [ -z "$serverchan_ipv6" ] || [ "$serverchan_ipv6" -ne "0" ] && [ "$serverchan_ipv6" -ne "1" ] && [ "$serverchan_ipv6" -ne "2" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv6 变化通知 开关" >> ${logfile};fi
ipv6_interface=`get_config ipv6_interface`
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -eq "1" ] && [ -z "$ipv6_interface" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv6 IP 接口信息" >> ${logfile};fi
ipv6_URL=`get_config ipv6_URL`
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -eq "2" ] && [ -z "$ipv6_URL" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv6 IP URL信息" >> ${logfile};fi
serverchan_up=`get_config serverchan_up`
if [ -z "$serverchan_up" ] || [ "$serverchan_up" -ne "0" ] && [ "$serverchan_up" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 设备上线提醒 开关" >> ${logfile};fi
serverchan_down=`get_config serverchan_down`
if [ -z "$serverchan_down" ] || [ "$serverchan_down" -ne "0" ] && [ "$serverchan_down" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 设备下线提醒 开关" >> ${logfile};fi
serverchan_sheep=`get_config serverchan_sheep`
if [ -z "$serverchan_sheep" ] ; then serverchan_sheep="0";fi
serverchan_whitelist=`get_config serverchan_whitelist`
@ -43,17 +30,22 @@ function read_config(){
if [ ! -z "$device_aliases" ] ; then device_aliases=`echo $device_aliases | sed 's/ /\n/g' | sed 's/-/ /g'`;fi
starttime=`get_config starttime`
endtime=`get_config endtime`
sleeptime=60
sleeptime=`get_config sleeptime`
if [ -z "$sleeptime" ] ; then sleeptime="60";fi
cpuload_enable=`get_config cpuload_enable`
cpuload=`get_config cpuload`
temperature_enable=`get_config temperature_enable`
temperature=`get_config temperature`
device_name=`get_config device_name`
dir="/tmp/serverchan/"
up_timeout=`get_config uptimeout`
if [ -z "$up_timeout" ] ; then up_timeout="2";fi
down_timeout=`get_config uptimeout`
if [ -z "$down_timeout" ] ; then down_timeout="10";fi
}
#等待 5s确保 luci 设置已保存
sleep 5
#sleep 5
read_config
# 检测程序开关
@ -73,13 +65,24 @@ function enable_detection(){
# 初始化
function serverchan_init(){
if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then exit;fi
if [ -z "$serverchan_enable" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取程序开关 " >> ${logfile};fi
if [ -z "$serverchan_sckey" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 SCKEY" >> ${logfile};fi
if [ -z "$serverchan_sckey" ] && [ "${#serverchan_sckey}" -lt "50" ] ; then echo "`date "+%H:%M:%S"` 【!!!】请填入正确的 SCKEY " >> ${logfile};fi
if [ -z "$serverchan_sckey" ] && [ "${#serverchan_sckey}" -lt "50" ] ; then exit;fi
if [ -z "$serverchan_ipv4" ] || [ "$serverchan_ipv4" -ne "0" ] && [ "$serverchan_ipv4" -ne "1" ] && [ "$serverchan_ipv4" -ne "2" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv4 变化通知 开关" >> ${logfile};fi
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -eq "1" ] && [ -z "$ipv4_interface" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv4 IP 接口信息" >> ${logfile};fi
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -eq "2" ] && [ -z "$ipv4_URL" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv4 IP URL信息" >> ${logfile};fi
if [ -z "$serverchan_ipv6" ] || [ "$serverchan_ipv6" -ne "0" ] && [ "$serverchan_ipv6" -ne "1" ] && [ "$serverchan_ipv6" -ne "2" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv6 变化通知 开关" >> ${logfile};fi
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -eq "1" ] && [ -z "$ipv6_interface" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv6 IP 接口信息" >> ${logfile};fi
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -eq "2" ] && [ -z "$ipv6_URL" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 ipv6 IP URL信息" >> ${logfile};fi
if [ -z "$serverchan_up" ] || [ "$serverchan_up" -ne "0" ] && [ "$serverchan_up" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 设备上线提醒 开关" >> ${logfile};fi
if [ -z "$serverchan_down" ] || [ "$serverchan_down" -ne "0" ] && [ "$serverchan_down" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【!!!】无法读取 设备下线提醒 开关" >> ${logfile};fi
mkdir -p ${dir}
network_enable="200"
rm -f ${dir}title >/dev/null 2>&1
rm -f ${dir}content >/dev/null 2>&1
rm -f ${dir}serverchan.lock >/dev/null 2>&1
Temperature_n=0
cpuload_n=0
send_enable=0
echo "`date "+%H:%M:%S"` 【初始化】载入配置文件" >> ${logfile}
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【初始化】工作目录为 $dir " >> ${logfile};fi
@ -101,7 +104,6 @@ elif [ ! -z "$serverchan_blacklist" ] ; then
elif [ ! -z "$serverchan_interface" ] ; then
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【初始化】仅关注接口内设备" >> ${logfile};fi
fi
}
@ -111,39 +113,44 @@ send_mode=`get_config send_mode`
if [ ! -z "$send_mode" ] ; then
if [ "$send_mode" -eq "1" ] ; then
regular_time=`get_config regular_time`
if ( echo `crontab -l` | grep "serverchan" | grep -q " $regular_time " ); then
echo "" >/dev/null
elif ( echo `crontab -l` | grep -q "serverchan" ); then
crontab -l > conf && sed -i "/serverchan/d" conf && crontab conf && rm -f conf
crontab -l > conf && echo -e "0 $regular_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf
/etc/init.d/cron stop
/etc/init.d/cron start
else
crontab -l > conf && echo -e "0 $regular_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf
/etc/init.d/cron stop
/etc/init.d/cron start
if [ ! -z "$regular_time" ] ; then
if ( echo `crontab -l` | grep "serverchan" | grep -q " $regular_time " ); then
echo "" >/dev/null
elif ( echo `crontab -l` | grep -q "serverchan" ); then
crontab -l > conf && sed -i "/serverchan/d" conf && crontab conf && rm -f conf >/dev/null 2>&1
crontab -l > conf && echo -e "0 $regular_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf >/dev/null 2>&1
/etc/init.d/cron stop
/etc/init.d/cron start
else
crontab -l > conf && echo -e "0 $regular_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf >/dev/null 2>&1
/etc/init.d/cron stop
/etc/init.d/cron start
fi
fi
elif [ "$send_mode" -eq "2" ] ; then
regular_time_2=`get_config regular_time_2`
interval_time=`get_config interval_time`
if ( echo `crontab -l` | grep "serverchan" | grep -q "*/$interval_time " ); then
echo "" >/dev/null
elif ( echo `crontab -l` | grep -q "serverchan" ); then
crontab -l > conf && sed -i "/serverchan/d" conf && crontab conf && rm -f conf
crontab -l > conf && echo -e "0 */$interval_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf
/etc/init.d/cron stop
/etc/init.d/cron start
else
crontab -l > conf && echo -e "0 $regular_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf
if [ ! -z "$regular_time_2" ] && [ ! -z "$interval_time" ] ; then
if ( echo `crontab -l` | grep "serverchan" | grep -q "$regular_time_2-24/$interval_time " ); then
echo "" >/dev/null
elif ( echo `crontab -l` | grep -q "serverchan" ); then
crontab -l > conf && sed -i "/serverchan/d" conf && crontab conf && rm -f conf >/dev/null 2>&1
crontab -l > conf && echo -e "0 $regular_time_2-24/$interval_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf >/dev/null 2>&1
/etc/init.d/cron stop
/etc/init.d/cron start
else
crontab -l > conf && echo -e "0 $regular_time_2-24/$interval_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf >/dev/null 2>&1
/etc/init.d/cron stop
/etc/init.d/cron start
fi
fi
elif [ -z "$send_mode" ] ; then
if ( echo `crontab -l` | grep -q "serverchan" ); then
crontab -l > conf && sed -i "/serverchan/d" conf && crontab conf && rm -f conf >/dev/null 2>&1
/etc/init.d/cron stop
/etc/init.d/cron start
fi
fi
elif [ -z "$send_mode" ] ; then
if ( echo `crontab -l` | grep -q "serverchan" ); then
crontab -l > conf && sed -i "/serverchan/d" conf && crontab conf && rm -f conf
/etc/init.d/cron stop
/etc/init.d/cron start
fi
fi
}
@ -229,7 +236,7 @@ function usage_down(){
sed -i "/$1/d" ${dir}usage.db
logrow_usage=$(grep -c "" ${dir}usage.db)
if [ $logrow_usage -le "1" ] ;then
rm -f ${dir}usage.db
rm -f ${dir}usage.db >/dev/null 2>&1
fi
fi
}
@ -281,15 +288,49 @@ function time_for_humans {
fi
}
#检测黑白名单
function blackwhitelist(){
if [ "$1" ] ;then
# 如果 “忽略列表 为空” 并且 “关注列表为空”
if [ -z "$serverchan_whitelist" ] && [ -z "$serverchan_blacklist" ] && [ -z "$serverchan_interface" ]; then
echo 1
# 如果 “忽略列表不为空”
elif [ ! -z "$serverchan_whitelist" ] ; then
if ( ! echo $serverchan_whitelist | grep -q -i $1 ); then
echo 1
else
echo 0
fi
# 如果 “关注列表不为空”
elif [ ! -z "$serverchan_blacklist" ] ; then
if ( echo $serverchan_blacklist | grep -q -i $1 ); then
echo 1
else
echo 0
fi
# 如果 “仅关注接口选项打开”
elif [ ! -z "$serverchan_interface" ] ; then
if ( echo $serverchan_interface | grep -q -i $( cat /proc/net/arp | grep -w $1 |awk '{print $6}' | grep -v "^$" | sort -u )); then
echo 1
else
echo 0
fi
fi
fi
}
#检测设备上线
function up(){
if [ ! -f "${dir}ipAddress" ] ; then > ${dir}ipAddress;fi
if [ "$1" ] ;then
send_enable=`get_config send_enable`
local temp_send_enable="$send_enable"
# 如果 ipAddress 文件中存在此ip则跳过待断线检测
grep -w -q $1 ${dir}ipAddress
if [ $? -ne 0 ] ; then
# 如果 ipAddress 文件中存在此ip则跳过待断线检测
ip_mac=$( cat /var/dhcp.leases | grep -w $1 |awk '{print $2}' | grep -v "^$" | sort -u )
if [ -z "$ip_mac" ] ; then ip_mac=$( cat /proc/net/arp | grep "0x2" | grep -w $1 | awk '{print $4}' | grep -v "^$" | sort -u );fi
@ -305,80 +346,82 @@ if [ "$1" ] ;then
local ip_ms=`echo $( arping -I $( cat /proc/net/arp | grep -w $1 | awk '{print $6}' | grep -v "^$" | sort -u ) -c 10 -f -w 1 $1)`
if ( ! echo ${ip_ms} | grep -q ms );then
local ip_ms=`ping -c 1 -w 1 $1`
local ip_ms=`ping -c 10 -w $up_timeout $1`
if ( ! echo ${ip_ms} | grep -q ms );then
sleep 1
local ip_ms=`echo $( arping -I $( cat /proc/net/arp | grep -w $1 | awk '{print $6}' | grep -v "^$" | sort -u ) -c 10 -f -w 2 $1)`
local ip_ms=`echo $( arping -I $( cat /proc/net/arp | grep -w $1 | awk '{print $6}' | grep -v "^$" | sort -u ) -c 10 -f -w $up_timeout $1)`
fi
fi
send_enable=`get_config send_enable`
if [ "$temp_send_enable" -ne "$send_enable" ] ; then return;fi
if ( echo ${ip_ms} | grep -q ms ); then
# 如果连接成功
LockFile
usage_down $1
if ( echo "$ip_mac" | grep -q "unknown" ) || ( echo "$ip_name" | grep -q "unknown" ) ; then
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 获取 $1 $ip_mac 设备信息失败,重试中" >> ${logfile};fi
for i in `seq 1 5`
do
sleep 1
if [ -z "$ip_mac" ] ; then ip_mac=$( cat /var/dhcp.leases | grep -w $1 |awk '{print $2}' | grep -v "^$" | sort -u );fi
if [ -z "$ip_mac" ] ; then ip_mac=$( cat /proc/net/arp | grep "0x2" | grep -w $1 | awk '{print $4}' | grep -v "^$" | sort -u );fi
if [ ! -z "$device_aliases" ] && [ ! -z "$ip_mac" ] && ( echo "$device_aliases" | grep -q -i $ip_mac ); then ip_name=$( echo "$device_aliases" | grep -i $ip_mac |awk '{print $2}' | grep -v "^$" | sort -u );fi
if [ -z "$ip_name" ] ; then ip_name=$( cat /var/dhcp.leases | grep -w $1 |awk '{print $4}' | grep -v "^$" | sort -u );fi
if [ ! -z "$ip_mac" ] && [ ! -z "$ip_name" ] ; then break;fi
done
fi
if [ -z "$ip_mac" ] ; then
ip_mac="unknown"
echo "`date "+%H:%M:%S"` 获取 $1 mac 超时,跳过" >> ${logfile}
fi
if [ -z "$ip_name" ] ; then
ip_name="unknown"
echo "`date "+%H:%M:%S"` 获取 $1 设备名超时,跳过" >> ${logfile}
fi
if ( echo ${ip_ms} | grep -q ms ); then
LockFile
usage_down $1
if ( echo "$ip_mac" | grep -q "unknown" ) || ( echo "$ip_name" | grep -q "unknown" ) ; then
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 获取 $1 $ip_mac 设备信息失败,重试中" >> ${logfile};fi
for i in `seq 1 5`
do
sleep 1
if [ -z "$ip_mac" ] ; then ip_mac=$( cat /var/dhcp.leases | grep -w $1 |awk '{print $2}' | grep -v "^$" | sort -u );fi
if [ -z "$ip_mac" ] ; then ip_mac=$( cat /proc/net/arp | grep "0x2" | grep -w $1 | awk '{print $4}' | grep -v "^$" | sort -u );fi
if [ ! -z "$device_aliases" ] && [ ! -z "$ip_mac" ] && ( echo "$device_aliases" | grep -q -i $ip_mac ); then ip_name=$( echo "$device_aliases" | grep -i $ip_mac |awk '{print $2}' | grep -v "^$" | sort -u );fi
if [ -z "$ip_name" ] ; then ip_name=$( cat /var/dhcp.leases | grep -w $1 |awk '{print $4}' | grep -v "^$" | sort -u );fi
if [ ! -z "$ip_mac" ] && [ ! -z "$ip_name" ] ; then break;fi
done
fi
if [ -z "$ip_mac" ] ; then
ip_mac="unknown"
echo "`date "+%H:%M:%S"` 获取 $1 mac 超时,跳过" >> ${logfile}
fi
if [ -z "$ip_name" ] ; then
ip_name="unknown"
echo "`date "+%H:%M:%S"` 获取 $1 设备名超时,跳过" >> ${logfile}
fi
if [ ! -z "$send_enable" ] && [ "$send_enable" -ne 3 ] ; then
# 如果定时任务没有运行
if [ -f "${dir}title" ] ; then title=`cat ${dir}title` ;fi
if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
if [ -z "$title" ] ; then
title="有人连接了你的路由器"
content="%0D%0A%0D%0A---%0D%0A%0D%0A####新设备连接%0D%0A%0D%0A"">$ip_name $1"
elif ( echo ${title} | grep -q "有人连接了你的路由器" ) ; then
title="有人连接了你的路由器"
content="%0D%0A%0D%0A"">$ip_name $1"
else
title="设备状态变化"
content="%0D%0A%0D%0A---%0D%0A%0D%0A####新设备连接%0D%0A%0D%0A"">$ip_name $1"
fi
#echo "$1 $( cat /var/dhcp.leases | grep -w $1 |awk '{print $2" "$4}' )" >> ${dir}ipAddress
echo "$1 $ip_mac $ip_name `date +%s`" >> ${dir}ipAddress
echo "`date "+%H:%M:%S"` 【微信推送】新设备 $ip_name $1 连接了">> ${logfile}
if [ ! -z "$send_enable" ] && [ "$send_enable" -ne 3 ] ; then
if [ ! -z "$serverchan_blacklist" ] ; then
if ( echo $serverchan_blacklist | grep -q -i $ip_mac ); then
title="你偷偷关注的设备上线了"
# 如果通过黑白名单验证
if [ ! -z `blackwhitelist $1` ] && [ `blackwhitelist $1` -eq 1 ] ; then
if [ -f "${dir}title" ] ; then title=`cat ${dir}title` ;fi
if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
if [ -z "$title" ] ; then
title="有人连接了你的路由器"
content="%0D%0A%0D%0A---%0D%0A%0D%0A####新设备连接%0D%0A%0D%0A"">$ip_name%0D%0A%0D%0A"">$1"
elif ( echo ${title} | grep -q "有人连接了你的路由器" ) ; then
title="有人连接了你的路由器"
content="%0D%0A%0D%0A"">$ip_name $1"
else
title="设备状态变化"
content="%0D%0A%0D%0A---%0D%0A%0D%0A####新设备连接%0D%0A%0D%0A"">$ip_name%0D%0A%0D%0A"">$1"
fi
fi
echo "`date "+%H:%M:%S"` 【微信推送】新设备 $ip_name $1 连接了">> ${logfile}
if [ ! -z "$serverchan_blacklist" ] ; then
if ( echo $serverchan_blacklist | grep -q -i $ip_mac ); then
title="你偷偷关注的设备上线了"
fi
fi
echo $title >${dir}title
echo -n $content >>${dir}content
echo $title >${dir}title
echo -n $content >>${dir}content
fi
else
# 如果定时任务运行
echo "`date "+%H:%M:%S"` 新设备 $ip_name $1 连接了" >> ${logfile}
echo "$1 $ip_mac $ip_name `date +%s`" >> ${dir}ipAddress
unset title
unset content
fi
echo "$1 $ip_mac $ip_name `date +%s`" >> ${dir}ipAddress
else
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 设备 $ip_name $1 连接失败" >> ${logfile};fi
fi
rm -f ${dir}serverchan.lock >/dev/null 2>&1
else
#调试日志
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -eq "5" ] ; then echo "`date "+%H:%M:%S"` $ip_name $1 已存在,跳过" >> ${logfile};fi
fi
unset ip_ms
@ -407,13 +450,13 @@ if [ "$1" ] ;then
if [ -z "$ip_name" ] ; then ip_name="unknown";fi
echo "$1 $ip_mac $ip_name $time_up" >> ${dir}ipAddress
fi
local ip_ms=`echo $( arping -I $( cat /proc/net/arp | grep -w $1 | awk '{print $6}' | grep -v "^$" | sort -u ) -c 10 -f -w 10 $1)`
local ip_ms=`echo $( arping -I $( cat /proc/net/arp | grep -w $1 | awk '{print $6}' | grep -v "^$" | sort -u ) -c 20 -f -w $down_timeout $1)`
if ( ! echo ${ip_ms} | grep -q ms );then
local ip_ms=`ping -c 5 -w 5 $1`
local ip_ms=`ping -c 5 -w 5 $1`
if ( ! echo ${ip_ms} | grep -q ms );then
sleep 1
local ip_ms=`echo $( arping -I $( cat /proc/net/arp | grep -w $1 | awk '{print $6}' | grep -v "^$" | sort -u ) -c 10 -f -w 10 $1)`
local ip_ms=`echo $( arping -I $( cat /proc/net/arp | grep -w $1 | awk '{print $6}' | grep -v "^$" | sort -u ) -c 20 -f -w $down_timeout $1)`
fi
fi
@ -423,13 +466,15 @@ if [ "$1" ] ;then
if ( echo ${ip_ms} | grep -q ms ); then
# 如果连接成功
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 设备 $ip_name $1 依然坚挺" >> ${logfile};fi
else
# 如果连接失败
LockFile
if [ ! -z "$send_enable" ] && [ "$send_enable" -ne 3 ] && [ ! -z "$ip_ms" ] ; then
else
LockFile
# 如果定时任务没有运行
if [ ! -z "$serverchan_down" ] && [ "$serverchan_down" -eq "1" ] ; then
# 如果打开了下线提醒
if [ ! -z "$send_enable" ] && [ "$send_enable" -ne 3 ] && [ ! -z "$ip_ms" ] ; then
# 如果通过黑白名单验证
if [ ! -z `blackwhitelist $1` ] && [ `blackwhitelist $1` -eq 1 ] ; then
if [ -f "${dir}title" ] ; then title=`cat ${dir}title` ;fi
if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
ip_total=`usage_ip $1`
@ -439,13 +484,13 @@ if [ "$1" ] ;then
time1=`time_for_humans $time1`
if [ -z "$title" ] ; then
title="设备离线通知"
content="%0D%0A%0D%0A---%0D%0A%0D%0A####设备断开连接%0D%0A%0D%0A"">$ip_name $1 %0D%0A%0D%0A"">总计流量:$ip_total%0D%0A%0D%0A"">在线 $time1"
content="%0D%0A%0D%0A---%0D%0A%0D%0A####设备断开连接%0D%0A%0D%0A"">$ip_name%0D%0A%0D%0A"">$1%0D%0A%0D%0A"">总计流量:$ip_total%0D%0A%0D%0A"">在线 $time1"
elif ( echo ${title} | grep -q "设备离线通知" ) ; then
title="设备离线通知"
content="%0D%0A%0D%0A"">$ip_name $1 %0D%0A%0D%0A"">总计流量:$ip_total%0D%0A%0D%0A"">在线 $time1"
else
title="设备状态变化"
content="%0D%0A%0D%0A---%0D%0A%0D%0A####设备断开连接%0D%0A%0D%0A"">$ip_name $1 %0D%0A%0D%0A"">总计流量:$ip_total%0D%0A%0D%0A"">在线 $time1"
content="%0D%0A%0D%0A---%0D%0A%0D%0A####设备断开连接%0D%0A%0D%0A"">$ip_name%0D%0A%0D%0A"">$1%0D%0A%0D%0A"">总计流量:$ip_total%0D%0A%0D%0A"">在线 $time1"
fi
echo "`date "+%H:%M:%S"` 【微信推送】设备 $ip_name $1 断开连接 " >> ${logfile}
@ -515,7 +560,6 @@ function send(){
wait
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【定时数据】开始进行设备接入检测" >> ${logfile};fi
IPLISTrow=$(grep -c "" ${dir}ipAddress)
IPLIST=$( cat /proc/net/arp | grep "0x2" | awk '{print $1}' | grep -v "^$" | sort -u )
for ip in $IPLIST; do
if [ ! -z "$ip" ] ; then
@ -523,8 +567,7 @@ function send(){
fi
done
wait
if [ "$IPLISTrow" -eq $(grep -c "" ${dir}ipAddress) ] ; then echo "`date "+%H:%M:%S"` 【定时数据】没有新设备连接" >> ${logfile};fi
send_content=${send_content}"%0D%0A%0D%0A---%0D%0A%0D%0A#### 在线设备%0D%0A%0D%0A";
IPLIST=$( cat ${dir}ipAddress | awk '{print $1}' )
@ -566,19 +609,18 @@ function send(){
if [ "$1" ] ;then
if [ $1 = "send" ] ;then send;fi
if [ $1 = "crontab" ] ;then serverchan_cron;fi
if [ $1 = "del_log" ] ;then clean_log del;fi
exit
fi
if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then exit;fi
serverchan_init
serverchan_cron
serverchan_init
serverchan_disturb
#初始化在线设备列表
function serverchan_first(){
if [ ! -z "$serverchan_enable" ] && [ "$serverchan_enable" -eq "1" ] ; then
echo "`date "+%H:%M:%S"` 【初始化】初始化在线设备列表" >> ${logfile}
echo "`date "+%H:%M:%S"` 【初始化】载入在线设备" >> ${logfile}
uci set serverchan.serverchan.send_enable=3
uci commit serverchan
IPLIST=$( cat /proc/net/arp | grep "0x2" | awk '{print $1}' | grep -v "^$" | sort -u )
@ -605,38 +647,14 @@ if [ ! -z "$serverchan_enable" ] && [ "$serverchan_enable" -eq "1" ] ; then
if [ -z "$ip_mac" ] ; then ip_mac="unknown";fi
if [ -z "$ip_name" ] ; then ip_name="unknown";fi
# 如果 “忽略列表 为空” 并且 “关注列表为空”
if [ -z "$serverchan_whitelist" ] && [ -z "$serverchan_blacklist" ] && [ -z "$serverchan_interface" ]; then
up $ip &
up $ip &
# 如果 “忽略列表不为空”
elif [ ! -z "$serverchan_whitelist" ] ; then
if ( ! echo $serverchan_whitelist | grep -q -i $ip_mac ); then
up $ip &
else
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] && ( ! echo ${ip_mac} | grep -q "unknown" ) ; then echo "`date "+%H:%M:%S"` 忽略列表已启用,跳过$ip_name $ip" >> ${logfile};fi
fi
# 如果 “关注列表不为空”
elif [ ! -z "$serverchan_blacklist" ] ; then
if ( echo $serverchan_blacklist | grep -q -i $ip_mac ); then
up $ip &
else
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] && ( ! echo ${ip_mac} | grep -q "unknown" ) ; then echo "`date "+%H:%M:%S"` 关注列表已启用,跳过$ip_name $ip" >> ${logfile};fi
fi
# 如果 “仅关注接口选项打开”
elif [ ! -z "$serverchan_interface" ] ; then
if ( echo $serverchan_interface | grep -q -i $( cat /proc/net/arp | grep -w $ip |awk '{print $6}' | grep -v "^$" | sort -u )); then
up $ip &
else
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] && ( ! echo ${ip_mac} | grep -q "unknown" ) ; then echo "`date "+%H:%M:%S"` 仅关注接口已启用,跳过$ip_name $ip" >> ${logfile};fi
fi
fi
fi
done
wait
uci set serverchan.serverchan.send_enable=0
uci commit serverchan
echo "`date "+%H:%M:%S"` 【初始化】初始化完成" >> ${logfile}
fi
}
serverchan_first
@ -675,7 +693,7 @@ function rand_geturl(){
if [ -f ${dir}ip ] ; then
last_IPv4=$(cat "${dir}ip" | grep IPv4 | awk '{print $2}' | grep -v "^$" | sort -u)
last_IPv6=$(cat "${dir}ip" | grep IPv6 | awk '{print $2}' | grep -v "^$" | sort -u)
if [ "$serverchan_ipv4" -eq "1" ] ;then
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -ne "0" ] ;then
if [ ! -z "$IPv4" ] && ( echo ${IPv4} | grep -w -q ${last_IPv4} );then
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` IP 无变化,当前 ip 为 $last_IPv4" >> ${logfile};fi
elif [ ! -z "$IPv4" ] ; then
@ -701,7 +719,7 @@ function rand_geturl(){
fi
fi
if [ "$serverchan_ipv6" -eq "1" ] ;then
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -ne "0" ] ;then
if [ ! -z "$IPv6" ] && ( echo ${IPv6} | grep -w -q ${last_IPv6} );then
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` IPv6 无变化,当前 ipv6 为 $last_IPv6" >> ${logfile};fi
elif [ ! -z "$IPv6" ] ; then
@ -730,23 +748,18 @@ function rand_geturl(){
else
unset last_IPv4
unset last_IPv6
echo "`date "+%H:%M:%S"` 【微信推送】路由器已经重启!当前IP${IPv4}" >> ${logfile}
echo "`date "+%H:%M:%S"` 当前IP: ${IPv4}" >> ${logfile}
echo "`date "+%H:%M:%S"` 【微信推送】路由器已经重启!当前IPv6${IPv6}" >> ${logfile}
echo "`date "+%H:%M:%S"` 当前IP: ${IPv6}" >> ${logfile}
echo "`date "+%H:%M:%S"` 【微信推送】路由器已经重启!" >> ${logfile}
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -ne "0" ] ;then echo "`date "+%H:%M:%S"` 当前IP: ${IPv4}" >> ${logfile};fi
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -ne "0" ] ;then echo "`date "+%H:%M:%S"` 当前IPv6: ${IPv6}" >> ${logfile};fi
echo IPv4 $IPv4 > ${dir}ip
echo -e IPv6 $IPv6 >> ${dir}ip
if [ -f "${dir}title" ] ; then title=`cat ${dir}title` ;fi
if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
if ( echo ${title} | grep -q "路由器重新启动" ) || [ -z "$title" ] ; then
title="路由器重新启动"
else
title="设备状态变化"
fi
content="%0D%0A%0D%0A---%0D%0A%0D%0A""####路由器重新启动%0D%0A%0D%0A>当前IP${IPv4}%0D%0A%0D%0A---%0D%0A%0D%0A""####IPv6 地址变化%0D%0A%0D%0A>当前 IPv6${IPv6}"
title="路由器重新启动"
content="%0D%0A%0D%0A---%0D%0A%0D%0A""####路由器重新启动"
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -ne "0" ] ;then content=${content}"%0D%0A%0D%0A>当前IP${IPv4}";fi
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -ne "0" ] ;then content=${content}"%0D%0A%0D%0A>当前IPv6${IPv6}";fi
echo $title >${dir}title
echo -n $content >>${dir}content
fi
@ -758,15 +771,17 @@ function rand_geturl(){
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【离线】开始进行设备下线检测" >> ${logfile};fi
fi
read_config
#从 ipAddress 文件中读取上次检测到的在线列表
IPLIST=$( cat ${dir}ipAddress | awk '{print $1}' | grep -v "^$" | sort -u )
#从 ipAddress 文件中读取上次检测到的在线列表
IPLISTrow=$(grep -c "" ${dir}ipAddress)
for ip in $IPLIST; do
# 如果 ip 列表不为空
send_enable=`get_config send_enable`
if [ ! -z "$ip" ] && [ "$send_enable" -ne 3 ] ; then
ip_mac=$( cat /var/dhcp.leases | grep -w $ip |awk '{print $2}' | grep -v "^$" | sort -u )
if [ -z "$ip_mac" ] ; then ip_mac=$( cat /proc/net/arp | grep "0x2" | grep -w $ip | awk '{print $4}' | grep -v "^$" | sort -u );fi
#设备名为空时尝试重读
if [ ! -z "$device_aliases" ] && [ ! -z "$ip_mac" ] && ( echo "$device_aliases" | grep -q -i $ip_mac ); then
ip_name=$( echo "$device_aliases" | grep -i $ip_mac |awk '{print $2}' | grep -v "^$" | sort -u )
ipAddress_name=$( cat ${dir}ipAddress | grep -w $ip | awk '{print $3}' | grep -v "^$" | sort -u )
@ -779,56 +794,28 @@ function rand_geturl(){
else
ip_name=$( cat /var/dhcp.leases | grep -w $ip |awk '{print $4}' | grep -v "^$" | sort -u )
fi
if [ -z "$ip_mac" ] ; then ip_mac="unknown";fi
if [ -z "$ip_name" ] ; then ip_name="unknown";fi
# 如果 “忽略列表 为空” 并且 “关注列表为空”
if [ -z "$serverchan_whitelist" ] && [ -z "$serverchan_blacklist" ] && [ -z "$serverchan_interface" ]; then
down $ip &
# 如果 “忽略列表不为空”
elif [ ! -z "$serverchan_whitelist" ] ; then
if ( ! echo $serverchan_whitelist | grep -q -i $ip_mac ); then
down $ip &
else
sed -i "/$ip/d" ${dir}ipAddress
usage_down $ip
fi
# 如果 “关注列表不为空”
elif [ ! -z "$serverchan_blacklist" ] ; then
if ( echo $serverchan_blacklist | grep -q -i $ip_mac ); then
down $ip &
else
sed -i "/$ip/d" ${dir}ipAddress
usage_down $ip
fi
# 如果 “仅关注接口选项打开”
elif [ ! -z "$serverchan_interface" ] ; then
if ( echo $serverchan_interface | grep -q -i $( cat /proc/net/arp | grep -w $ip |awk '{print $6}' | grep -v "^$" | sort -u )); then
down $ip &
else
sed -i "/$ip/d" ${dir}ipAddress
usage_down $ip
fi
fi
down $ip &
fi
done
wait
if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
if [ -z "$content" ] || ( ! echo ${content} | grep -q "设备断开连接" ) ; then
if [ "$IPLISTrow" -eq $(grep -c "" ${dir}ipAddress) ] ; then
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 没有检测到设备离线" >> ${logfile};fi
fi
#fi
#新设备接入
if [ ! -z "$serverchan_up" ] && [ "$serverchan_up" -eq "1" ] ; then
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【连接】开始进行设备接入检测" >> ${logfile};fi
fi
read_config
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【连接】开始进行设备接入检测" >> ${logfile};fi
#从 arp 缓存中读取 0x2 在线列表
IPLIST=$( cat /proc/net/arp | grep "0x2" | awk '{print $1}' | grep -v "^$" | sort -u )
for ip in $IPLIST; do
#从 arp 缓存中读取 0x2 在线列表
IPLIST=$( cat /proc/net/arp | grep "0x2" | awk '{print $1}' | grep -v "^$" | sort -u )
IPLISTrow=$(grep -c "" ${dir}ipAddress)
for ip in $IPLIST; do
# 如果 “ip 列表不为空”
send_enable=`get_config send_enable`
if [ ! -z "$ip" ] && [ "$send_enable" -ne 3 ] ; then
@ -848,46 +835,18 @@ function rand_geturl(){
if [ -z "$ip_mac" ] ; then ip_mac="unknown";fi
if [ -z "$ip_name" ] ; then ip_name="unknown";fi
# 如果 “忽略列表为空” 并且 “关注列表为空”
if [ -z "$serverchan_whitelist" ] && [ -z "$serverchan_blacklist" ] && [ -z "$serverchan_interface" ]; then
up $ip &
# 如果 “忽略列表不为空”
elif [ ! -z "$serverchan_whitelist" ] ; then
if ( ! echo $serverchan_whitelist | grep -q -i $ip_mac ); then
up $ip &
else
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] && ( ! echo ${ip_mac} | grep -q "unknown" ) ; then echo "`date "+%H:%M:%S"` 忽略列表已启用,跳过$ip_name $ip" >> ${logfile};fi
fi
# 如果 “关注列表不为空”
elif [ ! -z "$serverchan_blacklist" ] ; then
if ( echo $serverchan_blacklist | grep -q -i $ip_mac ); then
up $ip &
else
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] && ( ! echo ${ip_mac} | grep -q "unknown" ) ; then echo "`date "+%H:%M:%S"` 关注列表已启用,跳过$ip_name $ip" >> ${logfile};fi
fi
# 如果 “仅关注接口选项打开”
elif [ ! -z "$serverchan_interface" ] ; then
if ( echo $serverchan_interface | grep -q -i $( cat /proc/net/arp | grep -w $ip |awk '{print $6}' | grep -v "^$" | sort -u )); then
up $ip &
else
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] && ( ! echo ${ip_mac} | grep -q "unknown" ) ; then echo "`date "+%H:%M:%S"` 仅关注接口已启用,跳过$ip_name $ip" >> ${logfile};fi
fi
fi
up $ip &
fi
done
done
wait
if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
if [ -z "$content" ] || ( ! echo ${content} | grep -q "新设备连接" ) ; then
if [ "$IPLISTrow" -eq $(grep -c "" ${dir}ipAddress) ] ; then
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 没有新设备连接" >> ${logfile};fi
else
usage
fi
fi
cpu_Alert=0
#负载状态报警
if [ ! -z "$cpuload_enable" ] && [ "$cpuload_enable" -eq "1" ] ; then
@ -906,12 +865,14 @@ function rand_geturl(){
if [ -f "${dir}title" ] ; then title=`cat ${dir}title` ;fi
if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
title="CPU 负载过高!"
cpu_Alert=1
cpuload_time=`date +%s`
echo "`date "+%H:%M:%S"` 【微信推送】当前 CPU 负载过高: ${cpu_fuzai}" >> ${logfile}
content="%0D%0A%0D%0A---%0D%0A%0D%0A""####CPU 负载过高%0D%0A%0D%0A>CPU 负载已连续五分钟超过预设%0D%0A%0D%0A>接下来一小时不再提示%0D%0A%0D%0A>当前负载:${cpu_fuzai}"
echo $title >${dir}title
echo -n $content >>${dir}content
elif [ "$cpuload_n" -ge "60" ] ;then
cpuload_n=0
elif [ "$cpuload_n" -gt "5" ] && [ "$((`date +%s`-$cpuload_time))" -ge "3600" ] ;then
cpuload_n=4
fi
fi
@ -921,13 +882,14 @@ function rand_geturl(){
cpu_wendu=`cut -c1-2 /sys/class/thermal/thermal_zone*/temp`
temperature=`get_config temperature`
if [ ! -z "$temperature" ] && [ "$cpu_wendu" -gt "$temperature" ] ; then
Temperature_n=$(($Temperature_n+1))
temperature_n=$(($temperature_n+1))
echo "`date "+%H:%M:%S"` 【!!警报!!】当前 CPU 温度过高: ${cpu_wendu}" >> ${logfile}
else
Temperature_n=0
temperature_n=0
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` CPU 温度正常:$cpu_wendu" >> ${logfile};fi
fi
if [ "$Temperature_n" -eq "5" ] ;then
if [ "$temperature_n" -eq "5" ] ;then
if [ -f "${dir}title" ] ; then title=`cat ${dir}title` ;fi
if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
if [ ! -z "$title" ] && ( echo ${title} | grep -q "过高" ) ; then
@ -935,21 +897,41 @@ function rand_geturl(){
else
title="CPU 温度过高!"
fi
cpu_Alert=1
temperature_time=`date +%s`
echo "`date "+%H:%M:%S"` 【微信推送】当前 CPU 温度过高: ${cpu_wendu}" >> ${logfile}
content="%0D%0A%0D%0A---%0D%0A%0D%0A""####CPU 温度过高%0D%0A%0D%0A>CPU 温度已连续五分钟超过预设%0D%0A%0D%0A>接下来一小时不再提示%0D%0A%0D%0A>当前温度:${cpu_wendu}"
echo $title >${dir}title
echo -n $content >>${dir}content
elif [ "$Temperature_n" -ge "60" ] ;then
Temperature_n=0
elif [ "$temperature_n" -gt "5" ] && [ "$((`date +%s`-$temperature_time))" -ge "3600" ] ;then
temperature_n=4
fi
fi
if [ ! -z "$cpu_Alert" ] && [ "$cpu_Alert" -eq "1" ] ; then
top -bn 1 >${dir}top
content="%0D%0A%0D%0A---%0D%0A%0D%0A""####当前 CPU 占用前三的进程"
i=1 && top_i=5
while [ $i -le 3 ]
do
if ( cat ${dir}top | awk 'NR=='$top_i | grep -q "top -bn 1" ) ; then
echo "" >/dev/null
else
content=${content}"%0D%0A%0D%0A>`cat ${dir}top | awk 'NR=='$top_i | awk '{print $8" "$7}'`"
i=`expr $i + 1`
fi
top_i=`expr $top_i + 1`
done
echo -n $content >>${dir}content
rm -f ${dir}top >/dev/null 2>&1
fi
else
if [ ! -z "$network_enable" ] && [ "$network_enable" -eq "200" ] ; then
echo "`date "+%H:%M:%S"` 【!!!!】当前网络不通!停止检测! " >> ${logfile}
network_enable="404"
fi
enable_detection 60
enable_detection $sleeptime
continue
fi
@ -964,7 +946,7 @@ function rand_geturl(){
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo ""-----------------------------------------------------"" >> ${logfile};fi
send_str=1
fi
enable_detection 60
enable_detection $sleeptime
send_enable=`get_config send_enable`
continue
done
@ -997,7 +979,7 @@ function serverchan_send(){
rm -f ${dir}content >/dev/null 2>&1
fi
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【等待】我累了,$sleeptime 秒后再回来" >> ${logfile};fi
enable_detection 60
enable_detection $sleeptime
}
serverchan_disturb
serverchan_send