luci-app-serverchan: bump to 1.33
This commit is contained in:
parent
d11e062d8c
commit
200216ea6a
@ -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.30
|
||||
PKG_VERSION:=1.33
|
||||
PKG_RELEASE:=42
|
||||
|
||||
include $(TOPDIR)/feeds/luci/luci.mk
|
||||
|
||||
@ -36,7 +36,7 @@ device_name.description = translate("在推送信息标题中会标识本设备
|
||||
|
||||
sleeptime=s:taboption("tab_basic", Value,"sleeptime",translate('检测时间间隔'))
|
||||
sleeptime.default = "60"
|
||||
sleeptime.description = translate("越短的时间灵敏度越高,但会占用更多的系统资源")
|
||||
sleeptime.description = translate("越短的时间时间响应越及时,但会占用更多的系统资源")
|
||||
|
||||
debuglevel=s:taboption("tab_basic", ListValue,"debuglevel",translate("日志调试等级"))
|
||||
debuglevel:value("",translate("关闭"))
|
||||
@ -143,7 +143,7 @@ a= s:taboption("tab_basic2", Value, "temperature", "温度报警阈值")
|
||||
a.rmempty = true
|
||||
a.placeholder = "80"
|
||||
a:depends({temperature_enable="1"})
|
||||
a.description = translate("<br/>设备报警只会在连续五次超过阈值的时候才会推送<br/>而且一个小时内不会再提醒第二次")
|
||||
a.description = translate("<br/>设备报警只会在连续五分钟超过设定值时才会推送<br/>而且一个小时内不会再提醒第二次")
|
||||
|
||||
e=s:taboption("tab_basic3", ListValue,"send_mode",translate("定时任务设定"))
|
||||
e.default="disable"
|
||||
@ -154,18 +154,28 @@ e:value("2",translate("间隔发送"))
|
||||
e=s:taboption("tab_basic3", ListValue,"regular_time",translate("发送时间"))
|
||||
for t=0,23 do
|
||||
e:value(t,translate("每天"..t.."点"))
|
||||
end
|
||||
e.default=12
|
||||
end
|
||||
e.default=8
|
||||
e.datatype=uinteger
|
||||
e:depends("send_mode","1")
|
||||
|
||||
e=s:taboption("tab_basic3", ListValue,"regular_time_2",translate("第一次发送时间"))
|
||||
e=s:taboption("tab_basic3", ListValue,"regular_time_2",translate("发送时间"))
|
||||
e:value("",translate("关闭"))
|
||||
for t=0,23 do
|
||||
e:value(t,translate("每天"..t.."点"))
|
||||
end
|
||||
e.default=8
|
||||
end
|
||||
e.default="关闭"
|
||||
e.datatype=uinteger
|
||||
e:depends("send_mode","2")
|
||||
e:depends("send_mode","1")
|
||||
|
||||
e=s:taboption("tab_basic3", ListValue,"regular_time_3",translate("发送时间"))
|
||||
e:value("",translate("关闭"))
|
||||
for t=0,23 do
|
||||
e:value(t,translate("每天"..t.."点"))
|
||||
end
|
||||
e.default="关闭"
|
||||
e.datatype=uinteger
|
||||
e:depends("send_mode","1")
|
||||
|
||||
e=s:taboption("tab_basic3", ListValue,"interval_time",translate("发送间隔"))
|
||||
for t=1,23 do
|
||||
@ -174,6 +184,7 @@ end
|
||||
e.default=6
|
||||
e.datatype=uinteger
|
||||
e:depends("send_mode","2")
|
||||
e.description = translate("<br/>从 00:00 开始,每 * 小时发送一次")
|
||||
|
||||
title= s:taboption("tab_basic3", Value, "send_title", translate("微信推送标题"))
|
||||
title:depends("send_mode","1")
|
||||
@ -214,7 +225,7 @@ up_timeout.default = "2"
|
||||
|
||||
down_timeout=s:taboption("tab_basic4", Value,"down_timeout",translate('设备离线检测超时'))
|
||||
down_timeout.default = "10"
|
||||
down_timeout.description = translate("如果遇到设备频繁离线,可以把超时时间设置长一些")
|
||||
down_timeout.description = translate("如果遇到设备频繁离线,可以把超时时间设置长一些<br/>因为会重试两次,所以实际时间会略大于设定值的 2 倍")
|
||||
|
||||
sheep=s:taboption("tab_basic4", ListValue,"serverchan_sheep",translate("免打扰时段设置"),translate("在指定整点时间段内,暂停推送消息<br/>免打扰时间中,定时推送也会被阻止。"))
|
||||
sheep:value("0",translate("关闭"))
|
||||
|
||||
@ -4,7 +4,7 @@ STOP=10
|
||||
|
||||
|
||||
start() {
|
||||
flag=$(ps | grep "serverchan/serverchan" | grep -v "grep" | wc -l)
|
||||
flag=$(ps | grep "/usr/bin/serverchan/serverchan" | grep -v "grep" | wc -l)
|
||||
if [ $flag -eq 0 ] ;then
|
||||
/usr/bin/serverchan/serverchan &
|
||||
else
|
||||
@ -12,5 +12,5 @@ else
|
||||
fi
|
||||
}
|
||||
stop() {
|
||||
kill -9 `pgrep -f serverchan/serverchan`
|
||||
kill -9 `pgrep -f /usr/bin/serverchan/serverchan`
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ function read_config(){
|
||||
if [ -z "$down_timeout" ] ; then down_timeout="10";fi
|
||||
}
|
||||
|
||||
#等待 5s,确保 luci 设置已保存
|
||||
# 等待 5s,确保 luci 设置已保存
|
||||
#sleep 5
|
||||
read_config
|
||||
|
||||
@ -54,108 +54,102 @@ function enable_detection(){
|
||||
for i in `seq 1 $1`
|
||||
do
|
||||
serverchan_enable=`get_config serverchan_enable`
|
||||
if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then kill -9 `pgrep -f serverchan`;fi
|
||||
if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then kill -9 `pgrep -f /usr/bin/serverchan/serverchan`;fi
|
||||
sleep 1
|
||||
done
|
||||
else
|
||||
serverchan_enable=`get_config serverchan_enable`
|
||||
if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then kill -9 `pgrep -f serverchan`;fi
|
||||
if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then kill -9 `pgrep -f /usr/bin/serverchan/serverchan`;fi
|
||||
fi
|
||||
}
|
||||
|
||||
# 初始化
|
||||
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_enable" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取程序开关 " >> ${logfile};fi
|
||||
if [ -z "$serverchan_sckey" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取 SCKEY" >> ${logfile};fi
|
||||
if [ -z "$serverchan_sckey" ] && [ "${#serverchan_sckey}" -lt "50" ] ; then echo "`date "+%Y-%m-%d %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
|
||||
if [ -z "$serverchan_ipv4" ] || [ "$serverchan_ipv4" -ne "0" ] && [ "$serverchan_ipv4" -ne "1" ] && [ "$serverchan_ipv4" -ne "2" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取 ipv4 变化通知 开关" >> ${logfile};fi
|
||||
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -eq "1" ] && [ -z "$ipv4_interface" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取 ipv4 IP 接口信息" >> ${logfile};fi
|
||||
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -eq "2" ] && [ -z "$ipv4_URL" ] ; then echo "`date "+%Y-%m-%d %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 "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取 ipv6 变化通知 开关" >> ${logfile};fi
|
||||
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -eq "1" ] && [ -z "$ipv6_interface" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取 ipv6 IP 接口信息" >> ${logfile};fi
|
||||
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -eq "2" ] && [ -z "$ipv6_URL" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取 ipv6 IP URL信息" >> ${logfile};fi
|
||||
if [ -z "$serverchan_up" ] || [ "$serverchan_up" -ne "0" ] && [ "$serverchan_up" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取 设备上线提醒 开关" >> ${logfile};fi
|
||||
if [ -z "$serverchan_down" ] || [ "$serverchan_down" -ne "0" ] && [ "$serverchan_down" -ne "1" ] ; then echo "`date "+%Y-%m-%d %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
|
||||
send_enable=0
|
||||
echo "`date "+%H:%M:%S"` 【初始化】载入配置文件" >> ${logfile}
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【初始化】工作目录为 $dir " >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【初始化】log 目录为 $logfile " >> ${logfile};fi
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】载入配置文件" >> ${logfile}
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】工作目录为 $dir " >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】log 目录为 $logfile " >> ${logfile};fi
|
||||
|
||||
# 如果 “忽略列表 为空” 并且 “关注列表为空”
|
||||
if [ -z "$serverchan_whitelist" ] && [ -z "$serverchan_blacklist" ] && [ -z "$serverchan_interface" ]; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【初始化】未启用 MAC 过滤" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】未启用 MAC 过滤" >> ${logfile};fi
|
||||
|
||||
# 如果 “忽略列表不为空”
|
||||
elif [ ! -z "$serverchan_whitelist" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【初始化】忽略列表内设备" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】忽略列表内设备" >> ${logfile};fi
|
||||
|
||||
# 如果 “关注列表不为空”
|
||||
elif [ ! -z "$serverchan_blacklist" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【初始化】仅关注列表内设备" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】仅关注列表内设备" >> ${logfile};fi
|
||||
|
||||
# 如果 “仅关注接口选项打开”
|
||||
elif [ ! -z "$serverchan_interface" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【初始化】仅关注接口内设备" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】仅关注接口内设备" >> ${logfile};fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#创建计划任务
|
||||
# 创建计划任务
|
||||
function serverchan_cron(){
|
||||
send_mode=`get_config send_mode`
|
||||
if [ ! -z "$send_mode" ] ; then
|
||||
if [ "$send_mode" -eq "1" ] ; then
|
||||
send_mode=`get_config send_mode`
|
||||
if [ ! -z "$send_mode" ] ; then
|
||||
regular_time=`get_config regular_time`
|
||||
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`
|
||||
regular_time_3=`get_config regular_time_3`
|
||||
if [ ! -z "$regular_time_2" ] ; then regular_time_2=,${regular_time_2};fi
|
||||
if [ ! -z "$regular_time_3" ] ; then regular_time_3=,${regular_time_3};fi
|
||||
interval_time=`get_config interval_time`
|
||||
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
|
||||
|
||||
# 定时发送
|
||||
if [ ! -z "$regular_time" ] || [ ! -z "$regular_time_2" ] || [ ! -z "$regular_time_3" ] ; then
|
||||
if ( echo `crontab -l` | grep "serverchan" | grep -q " $regular_time$regular_time_2$regular_time_3 " ); then
|
||||
return
|
||||
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
|
||||
crontab -l > conf && echo -e "0 $regular_time$regular_time_2$regular_time_3 * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf >/dev/null 2>&1
|
||||
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
|
||||
crontab -l > conf && echo -e "0 $regular_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf >/dev/null 2>&1
|
||||
fi
|
||||
# 间隔发送
|
||||
elif [ ! -z "$interval_time" ] ; then
|
||||
if ( echo `crontab -l` | grep "serverchan" | grep -q " */$interval_time " ); then
|
||||
return
|
||||
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 */$interval_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf >/dev/null 2>&1
|
||||
else
|
||||
crontab -l > conf && echo -e "0 */$interval_time * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf >/dev/null 2>&1
|
||||
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
|
||||
fi
|
||||
fi
|
||||
/etc/init.d/cron stop
|
||||
/etc/init.d/cron start
|
||||
|
||||
}
|
||||
|
||||
|
||||
#免打扰检测
|
||||
# 免打扰检测
|
||||
function serverchan_disturb(){
|
||||
if [ ! -z "$serverchan_sheep" ] && [ "$serverchan_sheep" -eq "1" ] && [ ! -z "$starttime" ] && [ ! -z "$endtime" ] ;then
|
||||
if [ `date +%H` -ge $endtime -a $starttime -lt $endtime ] || [ `date +%H` -lt $starttime -a $starttime -lt $endtime ] || [ `date +%H` -lt $starttime -a `date +%H` -ge $endtime -a $starttime -gt $endtime ] ; then enable=1;else enable=0;fi
|
||||
@ -165,7 +159,7 @@ function serverchan_disturb(){
|
||||
while [ $enable -eq "0" ] ;
|
||||
do
|
||||
if [ "$sheep_str" -eq "0" ] ; then
|
||||
echo "`date "+%H:%M:%S"` 【免打扰】夜深了,该休息了" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【免打扰】夜深了,该休息了" >> ${logfile}
|
||||
sheep_str=1
|
||||
fi
|
||||
read_config
|
||||
@ -186,18 +180,17 @@ function serverchan_disturb(){
|
||||
}
|
||||
|
||||
|
||||
#清理日志
|
||||
# 清理日志
|
||||
function clean_log(){
|
||||
logrow=$(grep -c "" ${logfile})
|
||||
if [ $logrow -gt 500 ] ;then
|
||||
#cat /dev/null > ${logfile}
|
||||
sed -i '1,100d' ${logfile}
|
||||
echo "`date "+%H:%M:%S"` 【清理】日志超出上限,删除前 100 条" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【清理】日志超出上限,删除前 100 条" >> ${logfile}
|
||||
fi
|
||||
}
|
||||
if [ -f ${logfile} ] ; then clean_log;fi
|
||||
|
||||
#文件锁
|
||||
# 文件锁
|
||||
function LockFile()
|
||||
{
|
||||
if [ ! -f "${dir}serverchan.lock" ] ; then
|
||||
@ -217,13 +210,13 @@ function usage(){
|
||||
if [ -f "/usr/sbin/wrtbwmon" ] && [ -f "/etc/init.d/wrtbwmon" ] ; then
|
||||
wrtbwmon update ${dir}usage.db
|
||||
else
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【!!!】未安装 wrtbwmon ,流量统计不可用" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】未安装 wrtbwmon ,流量统计不可用" >> ${logfile};fi
|
||||
fi
|
||||
}
|
||||
|
||||
function usage_ip(){
|
||||
if [ "$1" ] ;then
|
||||
ip=`cat /tmp/serverchan/usage.db | grep -w $1`
|
||||
if [ -f "${dir}usage.db" ] ; then ip=`cat /tmp/serverchan/usage.db | grep -w $1`;else return;fi
|
||||
if [ ! -z "$ip" ] ; then ip=`echo $ip | sed 's/,/ /g'`;fi
|
||||
if [ ! -z "$ip" ] ; then ip_total=`echo $ip | awk '{print $6}'`;fi
|
||||
if [ ! -z "$ip_total" ] ; then echo `bytes_for_humans $ip_total`;fi
|
||||
@ -242,7 +235,6 @@ function usage_down(){
|
||||
}
|
||||
|
||||
# 流量数据单位换算
|
||||
# bytes_for_humans 1024
|
||||
function bytes_for_humans {
|
||||
if [ "$1" ] ;then
|
||||
if [[ $1 -lt 1024 ]]; then
|
||||
@ -260,7 +252,6 @@ function bytes_for_humans {
|
||||
}
|
||||
|
||||
# 时间单位换算
|
||||
# time_for_humans 1024
|
||||
function time_for_humans {
|
||||
if [ "$1" ] ;then
|
||||
if [[ $1 -lt 60 ]]; then
|
||||
@ -288,7 +279,7 @@ function time_for_humans {
|
||||
fi
|
||||
}
|
||||
|
||||
#检测黑白名单
|
||||
# 检测黑白名单
|
||||
function blackwhitelist(){
|
||||
if [ "$1" ] ;then
|
||||
# 如果 “忽略列表 为空” 并且 “关注列表为空”
|
||||
@ -321,7 +312,7 @@ function blackwhitelist(){
|
||||
fi
|
||||
}
|
||||
|
||||
#检测设备上线
|
||||
# 检测设备上线
|
||||
function up(){
|
||||
if [ ! -f "${dir}ipAddress" ] ; then > ${dir}ipAddress;fi
|
||||
if [ "$1" ] ;then
|
||||
@ -362,7 +353,7 @@ if [ "$1" ] ;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
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 获取 $1 $ip_mac 设备信息失败,重试中" >> ${logfile};fi
|
||||
for i in `seq 1 5`
|
||||
do
|
||||
sleep 1
|
||||
@ -375,41 +366,41 @@ if [ "$1" ] ;then
|
||||
fi
|
||||
if [ -z "$ip_mac" ] ; then
|
||||
ip_mac="unknown"
|
||||
echo "`date "+%H:%M:%S"` 获取 $1 mac 超时,跳过" >> ${logfile}
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 获取 $1 mac 超时,跳过" >> ${logfile};fi
|
||||
fi
|
||||
if [ -z "$ip_name" ] ; then
|
||||
ip_name="unknown"
|
||||
echo "`date "+%H:%M:%S"` 获取 $1 设备名超时,跳过" >> ${logfile}
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 获取 $1 设备名超时,跳过" >> ${logfile};fi
|
||||
fi
|
||||
|
||||
# 如果定时任务没有运行
|
||||
if [ ! -z "$send_enable" ] && [ "$send_enable" -ne 3 ] ; 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
|
||||
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
|
||||
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="你偷偷关注的设备上线了"
|
||||
if [ ! -z "$serverchan_up" ] && [ "$serverchan_up" -eq "1" ] ; 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
|
||||
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%0D%0A%0D%0A"">$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 "+%Y-%m-%d %H:%M:%S"` 【微信推送】新设备 $ip_name $1 连接了">> ${logfile}
|
||||
|
||||
if [ ! -z "$serverchan_blacklist" ] ; then
|
||||
title="你偷偷关注的设备上线了"
|
||||
fi
|
||||
|
||||
echo $title >${dir}title
|
||||
echo -n $content >>${dir}content
|
||||
echo $title >${dir}title
|
||||
echo -n $content >>${dir}content
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 新设备 $ip_name $1 连接了" >> ${logfile};fi
|
||||
else
|
||||
# 如果定时任务运行
|
||||
unset title
|
||||
@ -417,18 +408,18 @@ if [ "$1" ] ;then
|
||||
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
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %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
|
||||
# 调试日志
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -eq "5" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` $ip_name $1 已存在,跳过" >> ${logfile};fi
|
||||
fi
|
||||
unset ip_ms
|
||||
fi
|
||||
}
|
||||
|
||||
#检测设备下线
|
||||
# 检测设备下线
|
||||
function down(){
|
||||
if [ ! -f "${dir}ipAddress" ] ; then return;fi
|
||||
if [ "$1" ] ;then
|
||||
@ -438,7 +429,7 @@ if [ "$1" ] ;then
|
||||
if [ -z "$ip_mac" ] ; then ip_mac=$( cat /proc/net/arp | grep "0x2" | grep -w $1 | awk '{print $4}' | grep -v "^$" | sort -u );fi
|
||||
ip_name=$( cat ${dir}ipAddress | grep -w $1 |awk '{print $3}' | grep -v "^$" | sort -u )
|
||||
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
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` $1 $ip_mac 无设备名,尝试重新读取" >> ${logfile};fi
|
||||
time_up=$( cat ${dir}ipAddress | grep -w $ip |awk '{print $4}' | grep -v "^$" | sort -u )
|
||||
if [ -z "$time_up" ] ; then time_up=`date +%s`;fi
|
||||
sed -i "/$1/d" ${dir}ipAddress
|
||||
@ -465,39 +456,40 @@ 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
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 设备 $ip_name $1 依然坚挺" >> ${logfile};fi
|
||||
|
||||
# 如果连接失败
|
||||
else
|
||||
LockFile
|
||||
# 如果定时任务没有运行
|
||||
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`
|
||||
time_down=`date +%s`
|
||||
time_up=$( cat ${dir}ipAddress | grep -w $1 |awk '{print $4}' | grep -v "^$" | sort -u )
|
||||
time1=$(($time_down-$time_up))
|
||||
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%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%0D%0A%0D%0A"">$1%0D%0A%0D%0A"">总计流量:$ip_total%0D%0A%0D%0A"">在线 $time1"
|
||||
fi
|
||||
if [ ! -z "$serverchan_down" ] && [ "$serverchan_down" -eq "1" ] ; 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` && if [ ! -z "$ip_total" ] ; then ip_total=">总计流量:$ip_total%0D%0A%0D%0A""";fi
|
||||
time_down=`date +%s`
|
||||
time_up=$( cat ${dir}ipAddress | grep -w $1 |awk '{print $4}' | grep -v "^$" | sort -u )
|
||||
time1=$(($time_down-$time_up))
|
||||
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%0D%0A%0D%0A"">$1%0D%0A%0D%0A""$ip_total>在线 $time1"
|
||||
elif ( echo ${title} | grep -q "设备离线通知" ) ; then
|
||||
title="设备离线通知"
|
||||
content="%0D%0A%0D%0A"">$ip_name $1 %0D%0A%0D%0A""$ip_total>在线 $time1"
|
||||
else
|
||||
title="设备状态变化"
|
||||
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>在线 $time1"
|
||||
fi
|
||||
|
||||
echo "`date "+%H:%M:%S"` 【微信推送】设备 $ip_name $1 断开连接 " >> ${logfile}
|
||||
echo $title >${dir}title
|
||||
echo -n $content >>${dir}content
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】设备 $ip_name $1 断开连接 " >> ${logfile}
|
||||
echo $title >${dir}title
|
||||
echo -n $content >>${dir}content
|
||||
fi
|
||||
fi
|
||||
echo "`date "+%H:%M:%S"` 设备 $ip_name $1 断开连接 " >> ${logfile}
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 设备 $ip_name $1 断开连接 " >> ${logfile};fi
|
||||
sed -i "/$1/d" ${dir}ipAddress
|
||||
usage_down $1
|
||||
unset title
|
||||
@ -509,17 +501,24 @@ if [ "$1" ] ;then
|
||||
fi
|
||||
}
|
||||
|
||||
#发送定时数据
|
||||
# 获取SOC温度
|
||||
function soc_temp(){
|
||||
cat /sys/class/thermal/thermal_zone*/temp | sort | sed '$!d' | cut -c-2 2>/dev/null
|
||||
# 取所有传感器数值中的最大值
|
||||
}
|
||||
|
||||
# 发送定时数据
|
||||
function send(){
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【定时数据】创建定时任务" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】创建定时任务" >> ${logfile};fi
|
||||
uci set serverchan.serverchan.send_enable=3
|
||||
uci commit serverchan
|
||||
unset title
|
||||
unset content
|
||||
send_content=""
|
||||
serverchan_cron
|
||||
serverchan_disturb
|
||||
send_title=`get_config send_title`
|
||||
if [ -z "$send_title" ] ; then send_title="OpenWrt By tty228 路由状态:";fi
|
||||
if [ -z "$send_title" ] ; then send_title="路由状态:";fi
|
||||
router_status=`get_config router_status`
|
||||
if [ ! -z "$router_status" ] && [ "$router_status" -eq "1" ] ; then send_content=${send_content}"%0D%0A%0D%0A---%0D%0A%0D%0A#### 系统运行状态%0D%0A%0D%0A";fi
|
||||
#if [ ! -z "$router_status" ] && [ "$router_status" -eq "1" ] ; then send_content=${send_content}"%0D%0A%0D%0A"" CPU占用:`top -n 1 |grep -i Cpu:| awk '{print $3":"$2" "$5":"$4}'`";fi
|
||||
@ -527,7 +526,7 @@ function send(){
|
||||
if [ ! -z "$router_status" ] && [ "$router_status" -eq "1" ] ; then send_content=${send_content}"%0D%0A%0D%0A"" 内存占用:`free -m | sed -n '2p' | awk '{print""($3/$2)*100"%"}'`";fi
|
||||
if [ ! -z "$router_status" ] && [ "$router_status" -eq "1" ] ; then send_content=${send_content}"%0D%0A%0D%0A""`cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf(" 运行时间:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'`";fi
|
||||
router_temp=`get_config router_temp`
|
||||
if [ ! -z "$router_temp" ] && [ "$router_temp" -eq "1" ] ; then send_content=${send_content}"%0D%0A%0D%0A""---%0D%0A%0D%0A#### 设备温度%0D%0A%0D%0A CPU:`cut -c1-2 /sys/class/thermal/thermal_zone*/temp`%e2%84%83";fi
|
||||
if [ ! -z "$router_temp" ] && [ "$router_temp" -eq "1" ] ; then send_content=${send_content}"%0D%0A%0D%0A""---%0D%0A%0D%0A#### 设备温度%0D%0A%0D%0A CPU:`soc_temp`%e2%84%83";fi
|
||||
router_wan=`get_config router_wan`
|
||||
send_wanIP=$(ubus call network.interface.wan status | grep '\"address\"' | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
|
||||
send_wanIPv6=$(ip addr show|grep -v deprecated|grep -A1 'inet6 [^f:]'|sed -nr ':a;N;s#^ +inet6 ([a-f0-9:]+)/.+? scope global .*? valid_lft ([0-9]+sec) .*#\2 \1#p;ta'|sort -nr|head -n1|cut -d' ' -f2)
|
||||
@ -547,10 +546,10 @@ function send(){
|
||||
fi
|
||||
client_list=`get_config client_list`
|
||||
if [ ! -z "$client_list" ] && [ "$client_list" -eq "1" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【定时数据】检测客户端列表" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】检测客户端列表" >> ${logfile};fi
|
||||
|
||||
if [ ! -f "${dir}ipAddress" ] ; then > ${dir}ipAddress;fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【定时数据】开始进行设备下线检测" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】开始进行设备下线检测" >> ${logfile};fi
|
||||
IPLIST=$( cat ${dir}ipAddress| awk '{print $1}' | grep -v "^$" | sort -u )
|
||||
for ip in $IPLIST; do
|
||||
if [ ! -z "$ip" ] ; then
|
||||
@ -559,7 +558,7 @@ function send(){
|
||||
done
|
||||
wait
|
||||
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【定时数据】开始进行设备接入检测" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】开始进行设备接入检测" >> ${logfile};fi
|
||||
IPLIST=$( cat /proc/net/arp | grep "0x2" | awk '{print $1}' | grep -v "^$" | sort -u )
|
||||
for ip in $IPLIST; do
|
||||
if [ ! -z "$ip" ] ; then
|
||||
@ -572,12 +571,12 @@ function send(){
|
||||
|
||||
IPLIST=$( cat ${dir}ipAddress | awk '{print $1}' )
|
||||
for ip in $IPLIST; do
|
||||
ip_total=`usage_ip $ip`
|
||||
ip_total=`usage_ip $ip` && if [ ! -z "$ip_total" ] ; then ip_total="总计流量:$ip_total ";fi
|
||||
time_down=`date +%s`
|
||||
time_up=$( cat ${dir}ipAddress | grep -w $ip |awk '{print $4}' | grep -v "^$" | sort -u )
|
||||
time1=$(($time_down-$time_up))
|
||||
time1=`time_for_humans $time1`
|
||||
send_content=${send_content}"%0D%0A%0D%0A"" `cat ${dir}ipAddress | grep -w $ip | awk '{print $3}' | grep -v "^$" | sort -u` $ip%0D%0A%0D%0A"" 总计流量:$ip_total 在线 $time1"
|
||||
send_content=${send_content}"%0D%0A%0D%0A"" `cat ${dir}ipAddress | grep -w $ip | awk '{print $3}' | grep -v "^$" | sort -u` $ip%0D%0A%0D%0A"" 在线 $time1"
|
||||
done
|
||||
fi
|
||||
if [ ! -z "$device_name" ] ; then send_title="【$device_name】$send_title" ;fi
|
||||
@ -585,31 +584,30 @@ function send(){
|
||||
content=$( echo $content| sed $'s/unknown/%e6%9c%aa%e7%9f%a5%e8%ae%be%e5%a4%87/')
|
||||
#send_content=$( echo $send_content | sed $'s/\ /%20/g'| sed $'s/\"/%22/g'| sed $'s/\#/%23/g'| sed $'s/\&/%26/g'| sed $'s/\,/%2C/g'| sed $'s/\//%2F/g'| sed $'s/\:/%3A/g'| sed $'s/\;/%3B/g'| sed $'s/\=/%3D/g'| sed $'s/\@/%40/g')
|
||||
#未转义 | sed $'s/\(/%28/g' | sed $'s/\)/%29/g' | sed $'s/\+/%2B/g' | sed $'s/\%/%25/g' | sed $'s/\</%3C/g' | sed $'s/\>/%3E/g' | sed $'s/\?/%3F/g' | sed $'s/\\/%5C/g' | sed $'s/\|/%7C/g'
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【定时数据】进行 URL 编码,标题=$send_title" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】进行 URL 编码,标题=$send_title" >> ${logfile};fi
|
||||
if [ -z "$send_content" ] ; then
|
||||
send_content="%0D%0A%0D%0A---%0D%0A%0D%0A#### 我遇到了一个难题%0D%0A%0D%0A>你没有选择需要发送的项目,该怎么办呢%0D%0A%0D%0A---";
|
||||
echo "`date "+%H:%M:%S"` 【!!!】定时发送选项错误,请检查你的设置" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】定时发送选项错误,请检查你的设置" >> ${logfile}
|
||||
fi
|
||||
nowtime=`date "+%Y-%m-%d %H:%M:%S"`
|
||||
if [ ! -z "$serverchan_sheep" ] && [ "$serverchan_sheep" -eq "2" ] && [ ! -z "$starttime" ] && [ ! -z "$endtime" ] ;then
|
||||
if [ `date +%H` -ge $endtime -a $starttime -lt $endtime ] || [ `date +%H` -lt $starttime -a $starttime -lt $endtime ] || [ `date +%H` -lt $starttime -a `date +%H` -ge $endtime -a $starttime -gt $endtime ] ; then
|
||||
curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${send_title}" -d "&desp=${nowtime}%0D%0A%0D%0A${send_content}" >/dev/null
|
||||
else
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【定时数据】当前为免打扰时间,消息不发送" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】当前为免打扰时间,消息不发送" >> ${logfile};fi
|
||||
fi
|
||||
else
|
||||
curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${send_title}" -d "&desp=${nowtime}%0D%0A%0D%0A${send_content}" >/dev/null
|
||||
fi
|
||||
uci set serverchan.serverchan.send_enable=0
|
||||
uci commit serverchan
|
||||
echo "`date "+%H:%M:%S"` 【定时数据】微信推送" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】微信推送" >> ${logfile}
|
||||
exit
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
@ -617,18 +615,15 @@ 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 "+%Y-%m-%d %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 )
|
||||
> ${dir}ipAddress
|
||||
for ip in $IPLIST; do
|
||||
#忽略列表不检测
|
||||
#只检测关注列表
|
||||
|
||||
# 如果 “ip 列表不为空”
|
||||
if [ ! -z "$ip" ] ; then
|
||||
|
||||
@ -654,11 +649,10 @@ if [ ! -z "$serverchan_enable" ] && [ "$serverchan_enable" -eq "1" ] ; then
|
||||
wait
|
||||
uci set serverchan.serverchan.send_enable=0
|
||||
uci commit serverchan
|
||||
echo "`date "+%H:%M:%S"` 【初始化】初始化完成" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】初始化完成" >> ${logfile}
|
||||
fi
|
||||
}
|
||||
serverchan_first
|
||||
usage
|
||||
|
||||
while [ "$serverchan_enable" -eq "1" ] ;
|
||||
do
|
||||
@ -674,32 +668,32 @@ function rand_geturl(){
|
||||
if [ -z "$check" ] || [ "$check" -ne "200" ] ; then sleep 1 && rand_geturl;fi
|
||||
if [ ! -z "$check" ] && [ "$check" -eq "200" ] ; then
|
||||
usage
|
||||
if [ ! -z "$network_enable" ] && [ "$network_enable" -eq "404" ] ; then echo "`date "+%H:%M:%S"` 【网络状态】网络恢复正常.." >> ${logfile};fi
|
||||
if [ ! -z "$network_enable" ] && [ "$network_enable" -eq "404" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【网络状态】网络恢复正常.." >> ${logfile};fi
|
||||
network_enable="200"
|
||||
|
||||
#外网IP变化
|
||||
# 外网IP变化
|
||||
if [ ! -z "$serverchan_ipv4" ] && [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv4" -ne "0" ] || [ "$serverchan_ipv6" -ne "0" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【外网IP】正在检测外网IP变化" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【外网IP】正在检测外网IP变化" >> ${logfile};fi
|
||||
nowtime=`date "+%Y-%m-%d %H:%M:%S"`
|
||||
#查询当前 ipv4
|
||||
# 查询当前 ipv4
|
||||
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -eq "1" ] ; then IPv4=$(ip -4 address show "$ipv4_interface" | grep inet | grep -v 127.0.0 | awk '{print $2}' | cut -d'/' -f1 | head -n 1 | grep -v "^$" | sort -u);fi
|
||||
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -eq "2" ] ; then IPv4=$(curl -k -s -4 "$ipv4_URL");fi
|
||||
|
||||
#查询当前 ipv6
|
||||
# 查询当前 ipv6
|
||||
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -eq "1" ] ; then IPv6=$(ip -6 address show "$ipv6_interface" | grep inet6 | awk '{print $2}' | cut -d'/' -f1 | head -n 1 | grep -v "^$" | sort -u);fi
|
||||
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -eq "2" ] ; then IPv6=$(curl -k -s -6 "$ipv6_URL");fi
|
||||
|
||||
#查询ip历史记录
|
||||
# 查询ip历史记录
|
||||
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 [ ! -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
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` IP 无变化,当前 ip 为 $last_IPv4" >> ${logfile};fi
|
||||
elif [ ! -z "$IPv4" ] ; then
|
||||
echo "`date "+%H:%M:%S"` 当前 IP: ${IPv4}" >> ${logfile}
|
||||
echo "`date "+%H:%M:%S"` 上次 IP: ${last_IPv4}" >> ${logfile}
|
||||
echo "`date "+%H:%M:%S"` 【微信推送】当前IP:${IPv4}" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 当前 IP: ${IPv4}" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 上次 IP: ${last_IPv4}" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】当前IP:${IPv4}" >> ${logfile}
|
||||
echo IPv4 $IPv4 > ${dir}ip
|
||||
echo -e IPv6 $last_IPv6 >> ${dir}ip
|
||||
|
||||
@ -715,17 +709,17 @@ function rand_geturl(){
|
||||
echo $title >${dir}title
|
||||
echo -n $content >>${dir}content
|
||||
else
|
||||
echo "`date "+%H:%M:%S"` 【!!!】获取 IPv4 地址失败" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】获取 IPv4 地址失败" >> ${logfile}
|
||||
fi
|
||||
fi
|
||||
|
||||
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
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` IPv6 无变化,当前 ipv6 为 $last_IPv6" >> ${logfile};fi
|
||||
elif [ ! -z "$IPv6" ] ; then
|
||||
echo "`date "+%H:%M:%S"` 当前 IPv6: ${IPv6}" >> ${logfile}
|
||||
echo "`date "+%H:%M:%S"` 上次 IPv6: ${last_IPv6}" >> ${logfile}
|
||||
echo "`date "+%H:%M:%S"` 【微信推送】当前IPv6:${IPv6}" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 当前 IPv6: ${IPv6}" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 上次 IPv6: ${last_IPv6}" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】当前IPv6:${IPv6}" >> ${logfile}
|
||||
echo IPv4 $IPv4 > ${dir}ip
|
||||
echo -e IPv6 $IPv6 >> ${dir}ip
|
||||
|
||||
@ -741,16 +735,16 @@ function rand_geturl(){
|
||||
echo $title >${dir}title
|
||||
echo -n $content >>${dir}content
|
||||
else
|
||||
echo "`date "+%H:%M:%S"` 【!!!】获取 IPv6 地址失败" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】获取 IPv6 地址失败" >> ${logfile}
|
||||
fi
|
||||
fi
|
||||
|
||||
else
|
||||
unset last_IPv4
|
||||
unset last_IPv6
|
||||
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 "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】路由器已经重启!" >> ${logfile}
|
||||
if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -ne "0" ] ;then echo "`date "+%Y-%m-%d %H:%M:%S"` 当前IP: ${IPv4}" >> ${logfile};fi
|
||||
if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -ne "0" ] ;then echo "`date "+%Y-%m-%d %H:%M:%S"` 当前IPv6: ${IPv6}" >> ${logfile};fi
|
||||
echo IPv4 $IPv4 > ${dir}ip
|
||||
echo -e IPv6 $IPv6 >> ${dir}ip
|
||||
|
||||
@ -766,22 +760,22 @@ function rand_geturl(){
|
||||
if [ -f ${logfile} ] ; then clean_log;fi
|
||||
fi
|
||||
|
||||
#设备下线提醒
|
||||
# 设备下线提醒
|
||||
if [ ! -z "$serverchan_down" ] && [ "$serverchan_down" -eq "1" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【离线】开始进行设备下线检测" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【离线】开始进行设备下线检测" >> ${logfile};fi
|
||||
fi
|
||||
read_config
|
||||
#从 ipAddress 文件中读取上次检测到的在线列表
|
||||
IPLIST=$( cat ${dir}ipAddress | awk '{print $1}' | grep -v "^$" | sort -u )
|
||||
IPLISTrow=$(grep -c "" ${dir}ipAddress)
|
||||
for ip in $IPLIST; do
|
||||
# 从 ipAddress 文件中读取上次检测到的在线列表
|
||||
if [ -f ${dir}ipAddress ] ; then IPLIST=$( cat ${dir}ipAddress | awk '{print $1}' | grep -v "^$" | sort -u ) && IPLISTrow=$(grep -c "" ${dir}ipAddress);fi
|
||||
|
||||
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 )
|
||||
@ -800,21 +794,19 @@ function rand_geturl(){
|
||||
down $ip &
|
||||
|
||||
fi
|
||||
done
|
||||
wait
|
||||
if [ "$IPLISTrow" -eq $(grep -c "" ${dir}ipAddress) ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 没有检测到设备离线" >> ${logfile};fi
|
||||
fi
|
||||
#fi
|
||||
done
|
||||
wait
|
||||
if [ "$IPLISTrow" -eq $(grep -c "" ${dir}ipAddress) ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 没有检测到设备离线" >> ${logfile};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
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【连接】开始进行设备接入检测" >> ${logfile};fi
|
||||
fi
|
||||
read_config
|
||||
#从 arp 缓存中读取 0x2 在线列表
|
||||
IPLIST=$( cat /proc/net/arp | grep "0x2" | awk '{print $1}' | grep -v "^$" | sort -u )
|
||||
IPLISTrow=$(grep -c "" ${dir}ipAddress)
|
||||
# 从 arp 缓存中读取 0x2 在线列表
|
||||
if [ -f ${dir}ipAddress ] ; then IPLIST=$( cat /proc/net/arp | grep "0x2" | awk '{print $1}' | grep -v "^$" | sort -u ) && IPLISTrow=$(grep -c "" ${dir}ipAddress);fi
|
||||
for ip in $IPLIST; do
|
||||
# 如果 “ip 列表不为空”
|
||||
send_enable=`get_config send_enable`
|
||||
@ -841,55 +833,82 @@ function rand_geturl(){
|
||||
done
|
||||
wait
|
||||
if [ "$IPLISTrow" -eq $(grep -c "" ${dir}ipAddress) ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 没有新设备连接" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 没有新设备连接" >> ${logfile};fi
|
||||
else
|
||||
usage
|
||||
fi
|
||||
|
||||
cpu_Alert=0
|
||||
#负载状态报警
|
||||
# 负载状态报警
|
||||
if [ ! -z "$cpuload_enable" ] && [ "$cpuload_enable" -eq "1" ] ; then
|
||||
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【负载】正在检测 CPU 负载" >> ${logfile};fi
|
||||
cpu_fuzai=`cat /proc/loadavg | awk '{print $1}'`
|
||||
if [ -z "$cpuload_time" ] ; then cpuload_time=`date +%s`;fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【负载】正在检测 CPU 负载" >> ${logfile};fi
|
||||
cpu_fuzai=`cat /proc/loadavg | awk '{print $1}' 2>/dev/null`
|
||||
cpuload=`get_config cpuload`
|
||||
if [ ! -z "$cpuload" ] && [ `expr $cpu_fuzai \> $cpuload` -eq "1" ] ; then
|
||||
cpuload_n=$(($cpuload_n+1))
|
||||
echo "`date "+%H:%M:%S"` 【!!警报!!】当前 CPU 负载过高: ${cpu_fuzai}" >> ${logfile}
|
||||
else
|
||||
cpuload_n=0
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` CPU 负载正常:$cpu_fuzai" >> ${logfile};fi
|
||||
if [ ! -z "$cpu_fuzai" ] && [ ! -z "$cpuload" ] && [ `expr $cpu_fuzai \> $cpuload` -eq "1" ] ; then
|
||||
if [ -f ${logfile} ] && [ $(grep -c "" ${logfile}) -ge "2" ] ; then
|
||||
log_end=`awk '{print}' ${logfile} | tail -n 2 | awk 'NR==1'`
|
||||
log_end_2=`awk 'END {print}' ${logfile}`
|
||||
if ( echo ${log_end} | grep -q "负载" ) && ( echo ${log_end_2} | grep -q "负载" ) ; then
|
||||
sed -i '$d' -i /tmp/serverchan/serverchan.log
|
||||
sed -i '$d' -i /tmp/serverchan/serverchan.log
|
||||
echo "`echo $log_end | awk '{print $1" "$2}'` 【刷屏日志自动过滤】 CPU 负载持续超高: `echo $log_end | awk '{print $6}'`" >> ${logfile}
|
||||
fi
|
||||
fi
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!警报!!】 CPU 负载过高: ${cpu_fuzai}" >> ${logfile}
|
||||
elif [ -z "$cpu_fuzai" ] ; then
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取设备负载,请检查命令" >> ${logfile}
|
||||
# 一小时 CD 中
|
||||
elif [ ! -z "$cpucd_time" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` CPU 负载正常:$cpu_fuzai" >> ${logfile};fi
|
||||
else
|
||||
cpuload_time=`date +%s`
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` CPU 负载正常:$cpu_fuzai" >> ${logfile};fi
|
||||
fi
|
||||
|
||||
if [ "$cpuload_n" -eq "5" ] ;then
|
||||
if [ "$((`date +%s`-$cpuload_time))" -ge "300" ] && [ -z "$cpucd_time" ] ; then
|
||||
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}
|
||||
if [ -z "$cpucd_time" ] ; then cpucd_time=1;fi
|
||||
echo "`date "+%Y-%m-%d %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" -gt "5" ] && [ "$((`date +%s`-$cpuload_time))" -ge "3600" ] ;then
|
||||
cpuload_n=4
|
||||
elif [ "$((`date +%s`-$cpuload_time))" -ge "3300" ] ;then
|
||||
unset cpucd_time
|
||||
fi
|
||||
fi
|
||||
|
||||
#温度状态报警
|
||||
# 温度状态报警
|
||||
if [ ! -z "$temperature_enable" ] && [ "$temperature_enable" -eq "1" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【温度】正在检测 CPU 温度" >> ${logfile};fi
|
||||
cpu_wendu=`cut -c1-2 /sys/class/thermal/thermal_zone*/temp`
|
||||
if [ -z "$temperature_time" ] ; then temperature_time=`date +%s`;fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【温度】正在检测 CPU 温度" >> ${logfile};fi
|
||||
cpu_wendu=`soc_temp`
|
||||
temperature=`get_config temperature`
|
||||
if [ ! -z "$temperature" ] && [ "$cpu_wendu" -gt "$temperature" ] ; then
|
||||
temperature_n=$(($temperature_n+1))
|
||||
echo "`date "+%H:%M:%S"` 【!!警报!!】当前 CPU 温度过高: ${cpu_wendu}" >> ${logfile}
|
||||
if [ ! -z "$cpu_wendu" ] && [ ! -z "$temperature" ] && [ "$cpu_wendu" -gt "$temperature" ] ; then
|
||||
if [ -f ${logfile} ] && [ $(grep -c "" ${logfile}) -ge "2" ] ; then
|
||||
log_end=`awk '{print}' ${logfile} | tail -n 2 | awk 'NR==1'`
|
||||
log_end_2=`awk 'END {print}' ${logfile}`
|
||||
if ( echo ${log_end} | grep -q "温度" ) && ( echo ${log_end_2} | grep -q "温度" ) ; then
|
||||
sed -i '$d' -i /tmp/serverchan/serverchan.log
|
||||
sed -i '$d' -i /tmp/serverchan/serverchan.log
|
||||
echo "`echo $log_end | awk '{print $1" "$2}'` 【刷屏日志自动过滤】 CPU 温度持续超高: `echo $log_end | awk '{print $6}'`" >> ${logfile}
|
||||
fi
|
||||
fi
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!警报!!】 CPU 温度过高: ${cpu_wendu}" >> ${logfile}
|
||||
elif [ -z "$cpu_wendu" ] ; then
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】无法读取设备温度,请检查命令" >> ${logfile}
|
||||
# 一小时 CD 中
|
||||
elif [ ! -z "$temperaturecd_time" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` CPU 温度正常:$cpu_wendu" >> ${logfile};fi
|
||||
else
|
||||
temperature_n=0
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` CPU 温度正常:$cpu_wendu" >> ${logfile};fi
|
||||
temperature_time=`date +%s`
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` CPU 温度正常:$cpu_wendu" >> ${logfile};fi
|
||||
fi
|
||||
|
||||
if [ "$temperature_n" -eq "5" ] ;then
|
||||
if [ "$((`date +%s`-$temperature_time))" -ge "300" ] && [ -z "$temperaturecd_time" ] ; 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
|
||||
@ -898,13 +917,13 @@ function rand_geturl(){
|
||||
title="CPU 温度过高!"
|
||||
fi
|
||||
cpu_Alert=1
|
||||
temperature_time=`date +%s`
|
||||
echo "`date "+%H:%M:%S"` 【微信推送】当前 CPU 温度过高: ${cpu_wendu}" >> ${logfile}
|
||||
if [ -z "$temperaturecd_time" ] ; then temperaturecd_time=1;fi
|
||||
echo "`date "+%Y-%m-%d %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" -gt "5" ] && [ "$((`date +%s`-$temperature_time))" -ge "3600" ] ;then
|
||||
temperature_n=4
|
||||
elif [ "$((`date +%s`-$temperature_time))" -ge "3300" ] ;then
|
||||
unset temperaturecd_time
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -928,7 +947,7 @@ function rand_geturl(){
|
||||
|
||||
else
|
||||
if [ ! -z "$network_enable" ] && [ "$network_enable" -eq "200" ] ; then
|
||||
echo "`date "+%H:%M:%S"` 【!!!!】当前网络不通!停止检测! " >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!!】当前网络不通!停止检测! " >> ${logfile}
|
||||
network_enable="404"
|
||||
fi
|
||||
enable_detection $sleeptime
|
||||
@ -942,7 +961,7 @@ function rand_geturl(){
|
||||
do
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] && [ "$send_str" -eq "0" ] ; then
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "-----------------------------------------------------" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 发送定时数据,程序暂停中" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 发送定时数据,程序暂停中" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo ""-----------------------------------------------------"" >> ${logfile};fi
|
||||
send_str=1
|
||||
fi
|
||||
@ -963,12 +982,12 @@ function serverchan_send(){
|
||||
if [ ! -z "$device_name" ] ; then title="【$device_name】$title" ;fi
|
||||
title=$( echo $title | sed $'s/\ /%20/g'| sed $'s/\"/%22/g'| sed $'s/\#/%23/g'| sed $'s/\&/%26/g'| sed $'s/\,/%2C/g'| sed $'s/\//%2F/g'| sed $'s/\:/%3A/g'| sed $'s/\;/%3B/g'| sed $'s/\=/%3D/g'| sed $'s/\@/%40/g')
|
||||
content=$( echo $content| sed $'s/unknown/%e6%9c%aa%e7%9f%a5%e8%ae%be%e5%a4%87/')
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 进行 URL 编码,标题=$title" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 进行 URL 编码,标题=$title" >> ${logfile};fi
|
||||
if [ ! -z "$serverchan_sheep" ] && [ "$serverchan_sheep" -eq "2" ] && [ ! -z "$starttime" ] && [ ! -z "$endtime" ] ;then
|
||||
if [ `date +%H` -ge $endtime -a $starttime -lt $endtime ] || [ `date +%H` -lt $starttime -a $starttime -lt $endtime ] || [ `date +%H` -lt $starttime -a `date +%H` -ge $endtime -a $starttime -gt $endtime ] ; then
|
||||
curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${title}" -d "&desp=${nowtime}%0D%0A%0D%0A${content}" >/dev/null
|
||||
else
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 当前为免打扰时间,消息不发送" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 当前为免打扰时间,消息不发送" >> ${logfile};fi
|
||||
fi
|
||||
else
|
||||
curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${title}" -d "&desp=${nowtime}%0D%0A%0D%0A${content}" >/dev/null
|
||||
@ -978,23 +997,13 @@ function serverchan_send(){
|
||||
rm -f ${dir}title >/dev/null 2>&1
|
||||
rm -f ${dir}content >/dev/null 2>&1
|
||||
fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%H:%M:%S"` 【等待】我累了,$sleeptime 秒后再回来" >> ${logfile};fi
|
||||
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【等待】我累了,$sleeptime 秒后再回来" >> ${logfile};fi
|
||||
enable_detection $sleeptime
|
||||
}
|
||||
serverchan_disturb
|
||||
serverchan_send
|
||||
|
||||
#if [ ! -z "$serverchan_sheep" ] && [ "$serverchan_sheep" -eq "1" ] && [ ! -z "$starttime" ] && [ ! -z "$endtime" ] ;then
|
||||
# if [ `date +%H` -ge $endtime -a $starttime -lt $endtime ] || [ `date +%H` -lt $starttime -a $starttime -lt $endtime ] || [ `date +%H` -lt $starttime -a `date +%H` -ge $endtime -a $starttime -gt $endtime ] ; then
|
||||
# serverchan_send
|
||||
# else
|
||||
# serverchan_disturb
|
||||
# fi
|
||||
#else
|
||||
# serverchan_send
|
||||
#fi
|
||||
|
||||
continue
|
||||
done
|
||||
echo "`date "+%H:%M:%S"` 【!!!】程序未启用,退出脚本!" >> ${logfile}
|
||||
echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】程序未启用,退出脚本!" >> ${logfile}
|
||||
exit
|
||||
|
||||
Loading…
Reference in New Issue
Block a user