diff --git a/package/ctcgfw/luci-app-serverchan/Makefile b/package/ctcgfw/luci-app-serverchan/Makefile
index 9b74a174f8..e73464a3c1 100644
--- a/package/ctcgfw/luci-app-serverchan/Makefile
+++ b/package/ctcgfw/luci-app-serverchan/Makefile
@@ -6,7 +6,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-serverchan
-PKG_VERSION:=1.39
+PKG_VERSION:=1.41
PKG_RELEASE:=5
include $(INCLUDE_DIR)/package.mk
@@ -28,11 +28,10 @@ define Package/$(PKG_NAME)/conffiles
endef
define Package/$(PKG_NAME)/install
- $(INSTALL_DIR) $(1)/etc/init.d $(1)/etc/uci-defaults $(1)/usr/bin/serverchan $(1)/etc/config $(1)/usr/lib/lua/luci
+ $(INSTALL_DIR) $(1)/etc/init.d $(1)/usr/bin/serverchan $(1)/etc/config $(1)/usr/lib/lua/luci
$(CP) ./luasrc/* $(1)/usr/lib/lua/luci
$(INSTALL_CONF) ./root/etc/config/serverchan $(1)/etc/config
$(INSTALL_BIN) ./root/etc/init.d/serverchan $(1)/etc/init.d
- $(INSTALL_BIN) ./root/etc/uci-defaults/luci-serverchan $(1)/etc/uci-defaults
$(INSTALL_BIN) ./root/usr/bin/serverchan/serverchan $(1)/usr/bin/serverchan
endef
diff --git a/package/ctcgfw/luci-app-serverchan/luasrc/model/cbi/serverchan.lua b/package/ctcgfw/luci-app-serverchan/luasrc/model/cbi/serverchan.lua
index 528e96c396..12e986265e 100644
--- a/package/ctcgfw/luci-app-serverchan/luasrc/model/cbi/serverchan.lua
+++ b/package/ctcgfw/luci-app-serverchan/luasrc/model/cbi/serverchan.lua
@@ -65,6 +65,8 @@ e.write=function(e,e,e)
end
e=s:taboption("log", Button,translate(""))
+e:depends({debuglevel="1"})
+e:depends({debuglevel="2"})
e.inputtitle=translate("清理日志")
e.inputstyle = "clean_log"
function e.write(self, section)
@@ -133,15 +135,15 @@ a=s:taboption("tab_basic2", Flag,"cpuload_enable",translate("CPU 负载报警"))
a.default=0
a.rmempty=true
a= s:taboption("tab_basic2", Value, "cpuload", "负载报警阈值")
+a.default = "3.0"
a.rmempty = true
-a.placeholder = "2.0"
a:depends({cpuload_enable="1"})
a=s:taboption("tab_basic2", Flag,"temperature_enable",translate("CPU 温度报警"))
a.default=0
a.rmempty=true
a= s:taboption("tab_basic2", Value, "temperature", "温度报警阈值")
a.rmempty = true
-a.placeholder = "80"
+a.default = "80"
a:depends({temperature_enable="1"})
a.description = translate("
设备报警只会在连续五分钟超过设定值时才会推送
而且一个小时内不会再提醒第二次")
diff --git a/package/ctcgfw/luci-app-serverchan/root/etc/config/serverchan b/package/ctcgfw/luci-app-serverchan/root/etc/config/serverchan
index b7d3df739c..836aff6460 100644
--- a/package/ctcgfw/luci-app-serverchan/root/etc/config/serverchan
+++ b/package/ctcgfw/luci-app-serverchan/root/etc/config/serverchan
@@ -1,19 +1,14 @@
config serverchan 'serverchan'
- option serverchan_ip '1'
- option serverchan_down '1'
- option serverchan_sleeptime '60'
- option sheep_enabled '1'
- option temp_mask '1'
- option cpuload_enable '1'
- option temperature_enable '1'
- option serverchan_ipv6 '0'
- option serverchan_sheep '0'
- option cpuload '2'
- option send_enable '0'
option serverchan_enable '0'
+ option sleeptime '60'
option serverchan_ipv4 '0'
- option serverchan_up '1'
+ option serverchan_ipv6 '0'
+ option serverchan_up '0'
+ option serverchan_down '0'
+ option cpuload_enable '0'
+ option temperature_enable '0'
option up_timeout '2'
option down_timeout '10'
+ option serverchan_sheep '0'
diff --git a/package/ctcgfw/luci-app-serverchan/root/etc/init.d/serverchan b/package/ctcgfw/luci-app-serverchan/root/etc/init.d/serverchan
index a6ed99aa7f..e2770eaec7 100755
--- a/package/ctcgfw/luci-app-serverchan/root/etc/init.d/serverchan
+++ b/package/ctcgfw/luci-app-serverchan/root/etc/init.d/serverchan
@@ -1,8 +1,8 @@
#!/bin/sh /etc/rc.common
+
START=99
STOP=10
-
start() {
flag=$(ps | grep "serverchan/serverchan" | grep -v "grep" | wc -l)
if [ $flag -eq 0 ] ;then
@@ -12,7 +12,6 @@ else
fi
enable=$(uci get serverchan.serverchan.serverchan_enable)
if [ $enable -eq 1 ]; then
- echo "enable"
kill -9 $(ps | grep serverchan/serverchan | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
sleep 1
nohup /usr/bin/serverchan/serverchan 2>&1 &
@@ -23,7 +22,6 @@ stop() {
kill -9 `pgrep -f serverchan/serverchan`
enable=$(uci get serverchan.serverchan.serverchan_enable)
if [ $enable -ne 1 ]; then
- echo 'stop!'
kill $(pidof serverchan) >/dev/null 2>&1
kill -9 $(ps | grep serverchan | grep -v "grep" | awk '{print $1}') >/dev/null 2>&1
fi
@@ -33,5 +31,4 @@ restart(){
stop
sleep 1
start
- echo "restarted."
}
diff --git a/package/ctcgfw/luci-app-serverchan/root/etc/uci-defaults/luci-serverchan b/package/ctcgfw/luci-app-serverchan/root/etc/uci-defaults/luci-serverchan
deleted file mode 100644
index 3ed2a3749e..0000000000
--- a/package/ctcgfw/luci-app-serverchan/root/etc/uci-defaults/luci-serverchan
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-touch /etc/config/serverchan
-
-uci -q batch <<-EOF >/dev/null
- delete ucitrack.@serverchan[-1]
- add ucitrack serverchan
- set ucitrack.@serverchan[-1].init=serverchan
- commit ucitrack
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
diff --git a/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan b/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan
index 4b0a296a3a..3a15e17df8 100755
--- a/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan
+++ b/package/ctcgfw/luci-app-serverchan/root/usr/bin/serverchan/serverchan
@@ -1,16 +1,18 @@
#!/bin/sh
+# 等待 2s,确保 luci 设置已保存
+sleep 2
+
# 读取设置文件
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 "" >/dev/null;fi
+ uci get serverchan.serverchan.$1 2>/dev/null
fi
}
+# 初始化设置信息
function read_config(){
- debuglevel=`get_config debuglevel`
- if [ -z "$debuglevel" ] ; then logfile="/dev/null";else logfile="/tmp/serverchan/serverchan.log";fi
+ debuglevel=`get_config debuglevel` && if [ -z "$debuglevel" ] ; then logfile="/dev/null";else logfile="/tmp/serverchan/serverchan.log";fi
serverchan_enable=`get_config serverchan_enable`
serverchan_sckey=`get_config sckey`
serverchan_ipv4=`get_config serverchan_ipv4`
@@ -21,101 +23,80 @@ function read_config(){
ipv6_URL=`get_config ipv6_URL`
serverchan_up=`get_config serverchan_up`
serverchan_down=`get_config serverchan_down`
- serverchan_sheep=`get_config serverchan_sheep`
- if [ -z "$serverchan_sheep" ] ; then serverchan_sheep="0";fi
+ serverchan_sheep=`get_config serverchan_sheep` && if [ -z "$serverchan_sheep" ] ; then serverchan_sheep="0";fi
serverchan_whitelist=`get_config serverchan_whitelist`
serverchan_blacklist=`get_config serverchan_blacklist`
serverchan_interface=`get_config serverchan_interface`
- device_aliases=`get_config device_aliases`
- if [ ! -z "$device_aliases" ] ; then device_aliases=`echo $device_aliases | sed 's/ /\n/g' | sed 's/-/ /g'`;fi
+ device_aliases=`get_config device_aliases` && 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=`get_config sleeptime`
- if [ -z "$sleeptime" ] ; then sleeptime="60";fi
+ 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 up_timeout`
- if [ -z "$up_timeout" ] ; then up_timeout="2";fi
- down_timeout=`get_config down_timeout`
- if [ -z "$down_timeout" ] ; then down_timeout="10";fi
+ dir="/tmp/serverchan/" && mkdir -p ${dir}
+ up_timeout=`get_config up_timeout` && if [ -z "$up_timeout" ] ; then up_timeout="2";fi
+ down_timeout=`get_config down_timeout` && if [ -z "$down_timeout" ] ; then down_timeout="10";fi
}
-# 等待 2s,确保 luci 设置已保存
-sleep 2
-read_config
-
# 检测程序开关
function enable_detection(){
if [ "$1" ] ;then
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 /usr/bin/serverchan/serverchan`;fi
+ if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then `/etc/init.d/serverchan stop`;fi
sleep 1
done
else
serverchan_enable=`get_config serverchan_enable`
- if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then kill -9 `pgrep -f /usr/bin/serverchan/serverchan`;fi
+ if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then `/etc/init.d/serverchan stop`;fi
fi
}
# 初始化
function serverchan_init(){
-if [ -z "$serverchan_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then exit;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 "+%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 "+%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 "+%Y-%m-%d %H:%M:%S"` 【初始化】未启用 MAC 过滤" >> ${logfile};fi
-
-# 如果 “忽略列表不为空”
-elif [ ! -z "$serverchan_whitelist" ] ; then
- 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 "+%Y-%m-%d %H:%M:%S"` 【初始化】仅关注列表内设备" >> ${logfile};fi
-
-# 如果 “仅关注接口选项打开”
-elif [ ! -z "$serverchan_interface" ] ; then
- if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】仅关注接口内设备" >> ${logfile};fi
-fi
+ deltemp
+ rm -f ${dir}usage.db >/dev/null 2>&1
+ uci set serverchan.serverchan.send_enable=0
+ uci commit serverchan
+ 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_enable" ] || [ "$serverchan_enable" -eq "0" ] ; then exit;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 "+%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
+ if [ -z "$serverchan_whitelist" ] && [ -z "$serverchan_blacklist" ] && [ -z "$serverchan_interface" ]; then
+ 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 "+%Y-%m-%d %H:%M:%S"` 【初始化】忽略列表内设备" >> ${logfile};fi
+ elif [ ! -z "$serverchan_blacklist" ] ; then
+ 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 "+%Y-%m-%d %H:%M:%S"` 【初始化】仅关注接口内设备" >> ${logfile};fi
+ fi
}
# 创建计划任务
function serverchan_cron(){
- send_mode=`get_config send_mode`
+ local send_mode=`get_config send_mode`
if [ ! -z "$send_mode" ] ; then
- regular_time=`get_config regular_time`
- 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`
+ local regular_time=`get_config regular_time`
+ local regular_time_2=`get_config regular_time_2`
+ local regular_time_3=`get_config regular_time_3`
+ if [ ! -z "$regular_time_2" ] ; then local regular_time_2=,${regular_time_2};fi
+ if [ ! -z "$regular_time_3" ] ; then local regular_time_3=,${regular_time_3};fi
+ local interval_time=`get_config interval_time`
# 定时发送
if [ ! -z "$regular_time" ] || [ ! -z "$regular_time_2" ] || [ ! -z "$regular_time_3" ] ; then
@@ -125,7 +106,7 @@ function serverchan_cron(){
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$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 * * * /usr/bin/serverchan/serverchan send &" >> conf && crontab conf && rm -f conf >/dev/null 2>&1
+ 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
fi
# 间隔发送
elif [ ! -z "$interval_time" ] ; then
@@ -145,101 +126,71 @@ function serverchan_cron(){
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
-
+ if [ ! -z "$serverchan_sheep" ] && [ ! -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 local enable=1;else local enable=0;fi
+
if [ "$enable" -eq "0" ] ;then
- sheep_str=0
- while [ $enable -eq "0" ] ;
- do
- if [ "$sheep_str" -eq "0" ] ; then
- echo "`date "+%Y-%m-%d %H:%M:%S"` 【免打扰】夜深了,该休息了" >> ${logfile}
- sheep_str=1
- fi
- read_config
- 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
- enable_detection 1
- fi
- continue
- done
- unset title
- unset content
- rm -f ${dir}title >/dev/null 2>&1
- rm -f ${dir}content >/dev/null 2>&1
+ if [ "$serverchan_sheep" -eq "1" ] ;then
+ local sheep_str=0
+ while [ $enable -eq "0" ] ;
+ do
+ if [ "$sheep_str" -eq "0" ] ; then
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【免打扰】夜深了,该休息了" >> ${logfile}
+ local sheep_str=1
+ fi
+ 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
+ local enable=1
+ else
+ local enable=0
+ enable_detection 1
+ fi
+ continue
+ done
+ elif [ "$serverchan_sheep" -eq "2" ] ;then
+ echo 0
+ return
+ fi
+ fi
+ fi
+ echo 1
+}
+
+# 文件锁
+function LockFile(){
+ if [ "$1" ] ;then
+ if [ $1 = "lock" ] ;then
+ if [ ! -f "${dir}serverchan.lock" ] ; then
+ > ${dir}serverchan.lock
+ else
+ while [ -f "${dir}serverchan.lock" ] ;
+ do
+ continue
+ done
+ LockFile lock
+ fi
+ fi
+ if [ $1 = "unlock" ] ;then
+ rm -f ${dir}serverchan.lock >/dev/null 2>&1
fi
fi
}
-
-# 清理日志
-function clean_log(){
- logrow=$(grep -c "" ${logfile})
- if [ $logrow -gt 500 ] ;then
- sed -i '1,100d' ${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
- > ${dir}serverchan.lock
-else
- while [ -f "${dir}serverchan.lock" ] ;
- do
- #sleep 1
- continue
- done
- LockFile
-fi
-}
-
-# 流量数据
-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 "+%Y-%m-%d %H:%M:%S"` 【!!!】未安装 wrtbwmon ,流量统计不可用" >> ${logfile};fi
- fi
-}
-
-# CPU 占用率
-function getcpu(){
- AT=$(cat /proc/stat | grep "^cpu " | awk '{print $2+$3+$4+$5+$6+$7+$8 " " $2+$3+$4+$7+$8}')
- sleep 3
- BT=$(cat /proc/stat | grep "^cpu " | awk '{print $2+$3+$4+$5+$6+$7+$8 " " $2+$3+$4+$7+$8}')
- printf "%.01f%%" $(echo $AT $BT | awk '{print (($4-$2)/($3-$1))*100}')
-}
-
-# 流量数据
-function usage_ip(){
- if [ "$1" ] ;then
- if [ -f ${dir}usage.db ] ; then ip=`cat ${dir}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
- fi
-}
-
-# 流量数据剔除ip
-function usage_down(){
- if [ ! -f "${dir}usage.db" ] ; then return;fi
- if [ "$1" ] ;then
- 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 >/dev/null 2>&1
+# 清理临时文件
+function deltemp(){
+ unset title
+ unset content
+ rm -f ${dir}title >/dev/null 2>&1
+ rm -f ${dir}content >/dev/null 2>&1
+ LockFile unlock
+ if [ -f ${logfile} ] ; then
+ local logrow=$(grep -c "" ${logfile})
+ if [ $logrow -gt 500 ] ;then
+ sed -i '1,100d' ${logfile}
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【清理】日志超出上限,删除前 100 条" >> ${logfile}
fi
fi
}
@@ -257,7 +208,7 @@ function bytes_for_humans {
echo `awk 'BEGIN{printf "%.2f\n",'$1'/'1073741824'}'` GB
fi
else
- echo 0bytes
+ echo 0 bytes
fi
}
@@ -267,21 +218,21 @@ function time_for_humans {
if [[ $1 -lt 60 ]]; then
echo $1 秒
elif [[ $1 -lt 3600 ]]; then
- usetime_min=`expr $1 / 60`
- usetime_sec=`expr $usetime_min \* 60`
- usetime_sec=`expr $1 - ${usetime_sec}`
+ local usetime_min=`expr $1 / 60`
+ local usetime_sec=`expr $usetime_min \* 60`
+ local usetime_sec=`expr $1 - ${usetime_sec}`
echo $usetime_min 分 $usetime_sec 秒
elif [[ $1 -lt 216000 ]]; then
- usetime_hour=`expr $1 / 3600`
- usetime_min=`expr $usetime_hour \* 3600`
- usetime_min=`expr $1 - ${usetime_min}`
- usetime_min=`expr ${usetime_min} / 60`
+ local usetime_hour=`expr $1 / 3600`
+ local usetime_min=`expr $usetime_hour \* 3600`
+ local usetime_min=`expr $1 - ${usetime_min}`
+ local usetime_min=`expr ${usetime_min} / 60`
echo $usetime_hour 小时 $usetime_min 分
else
- usetime_day=`expr $1 / 86400`
- usetime_hour=`expr $usetime_day \* 86400`
- usetime_hour=`expr $1 - ${usetime_hour}`
- usetime_hour=`expr ${usetime_hour} / 3600`
+ local usetime_day=`expr $1 / 86400`
+ local usetime_hour=`expr $usetime_day \* 86400`
+ local usetime_hour=`expr $1 - ${usetime_hour}`
+ local usetime_hour=`expr ${usetime_hour} / 3600`
echo $usetime_day 天 $usetime_hour 小时
fi
else
@@ -289,11 +240,48 @@ function time_for_humans {
fi
}
+# 流量数据
+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 "+%Y-%m-%d %H:%M:%S"` 【!!!】未安装 wrtbwmon ,流量统计不可用" >> ${logfile};fi
+ fi
+}
+
+# CPU 占用率
+function getcpu(){
+ local AT=$(cat /proc/stat | grep "^cpu " | awk '{print $2+$3+$4+$5+$6+$7+$8 " " $2+$3+$4+$7+$8}')
+ sleep 3
+ local BT=$(cat /proc/stat | grep "^cpu " | awk '{print $2+$3+$4+$5+$6+$7+$8 " " $2+$3+$4+$7+$8}')
+ printf "%.01f%%" $(echo $AT $BT | awk '{print (($4-$2)/($3-$1))*100}')
+}
+
+# 流量数据
+function usage_ip(){
+ if [ "$1" ] ;then
+ if [ -f ${dir}usage.db ] ; then local ip=`cat ${dir}usage.db | grep -w $1`;else return;fi
+ if [ ! -z "$ip" ] ; then local ip=`echo $ip | sed 's/,/ /g'` && local ip_total=`echo $ip | awk '{print $6}'`;fi
+ if [ ! -z "$ip_total" ] ; then echo `bytes_for_humans $ip_total`;fi
+ fi
+}
+
+# 流量数据剔除ip
+function usage_down(){
+ if [ ! -f "${dir}usage.db" ] ; then return;fi
+ if [ "$1" ] ;then
+ sed -i "/$1/d" ${dir}usage.db
+ local logrow_usage=$(grep -c "" ${dir}usage.db)
+ if [ $logrow_usage -le "1" ] ;then
+ rm -f ${dir}usage.db >/dev/null 2>&1
+ fi
+ fi
+}
+
# 检测黑白名单
function blackwhitelist(){
if [ "$1" ] ;then
- ip_mac=$( cat ${dir}ipAddress | grep -w $1 |awk '{print $2}' | grep -v "^$" | sort -u )
- if [ -z "$ip_mac" ] ; then ip_mac=$( cat /proc/net/arp | grep -w $1 | awk '{print $4}' | grep -v "^$" | sort -u );fi
+ local ip_mac=`getmac $1`
# 如果 “忽略列表 为空” 并且 “关注列表为空”
if [ -z "$serverchan_whitelist" ] && [ -z "$serverchan_blacklist" ] && [ -z "$serverchan_interface" ]; then
echo 1
@@ -316,8 +304,8 @@ function blackwhitelist(){
if ( echo $serverchan_interface | grep -q -i -w $ip_mac) ; then
echo 1
else
- wlan_interface=`iw dev $serverchan_interface station dump | grep -i -w $ip_mac | grep Station`
- ipAddress_interface=$( cat ${dir}ipAddress | grep -w $1 |awk '{print $5}' | grep -v "^$" | sort -u )
+ local wlan_interface=`iw dev $serverchan_interface station dump | grep -i -w $ip_mac | grep Station`
+ local ipAddress_interface=$( cat ${dir}ipAddress | grep -w $1 |awk '{print $5}' | grep -v "^$" | sort -u )
if [ ! -z "$wlan_interface" ] || [ ! -z "$ipAddress_interface" ] ; then
echo 1
else
@@ -328,88 +316,170 @@ function blackwhitelist(){
fi
}
+# 检测网络状态
+function rand_geturl(){
+ local urllist="https://www.163.com https://www.qq.com https://www.baidu.com https://www.qidian.com https://www.douban.com"
+ local url_str=$( echo "$urllist" | awk -v i="`awk 'BEGIN{srand();sum=rand()*5+ 1;printf("%d",sum)}'`" '{print $i}' )
+ local check=`curl -k -s -w "%{http_code}" $url_str -A "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11" -o /dev/null`
+ while [ -z "$check" ] || [ "$check" -ne "200" ];
+ do
+ local check=`curl -k -s -w "%{http_code}" $url_str -A "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11" -o /dev/null`
+ if [ ! -z "$check" ] && [ "$check" -eq "200" ] ; then
+ if [ ! -z "$network_enable" ] && [ "$network_enable" -eq "404" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【网络状态】网络恢复正常.." >> ${logfile};fi
+ local network_enable="200"
+ else
+ if [ ! -z "$network_enable" ] && [ "$network_enable" -eq "200" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!!】当前网络不通!停止检测! " >> ${logfile};fi
+ local network_enable="404"
+ enable_detection $sleeptime
+ fi
+ continue
+ done
+}
+
+# 检测 ip 状况
+function ip_changes(){
+ if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 【外网IP】正在检测外网IP变化" >> ${logfile};fi
+ if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -eq "1" ] ; then local 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 local IPv4=$(curl -k -s -4 "$ipv4_URL");fi
+ if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -eq "1" ] ; then local 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 local IPv6=$(curl -k -s -6 "$ipv6_URL");fi
+
+ if [ -f ${dir}ip ] ; then
+ local last_IPv4=$(cat "${dir}ip" | grep IPv4 | awk '{print $2}' | grep -v "^$" | sort -u)
+ local 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 "+%Y-%m-%d %H:%M:%S"` IP 无变化,当前 ip 为 $last_IPv4" >> ${logfile};fi
+ elif [ ! -z "$IPv4" ] ; then
+ if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 当前 IP: ${IPv4}" >> ${logfile};fi
+ if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 上次 IP: ${last_IPv4}" >> ${logfile};fi
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】当前IP:${IPv4}" >> ${logfile}
+ echo IPv4 $IPv4 > ${dir}ip
+ echo -e IPv6 $last_IPv6 >> ${dir}ip
+
+ if [ -f "${dir}title" ] ; then local title=`cat ${dir}title` ;fi
+ if [ -f "${dir}content" ] ; then local content=`cat ${dir}content` ;fi
+ if ( echo ${title} | grep -q "IP 地址变化" ) || [ -z "$title" ] ; then
+ local title="IP 地址变化"
+ else
+ local title="设备状态变化"
+ fi
+
+ local content="%0D%0A%0D%0A---%0D%0A%0D%0A""####IP 地址变化%0D%0A%0D%0A>当前 IP:${IPv4}"
+ echo $title >${dir}title
+ echo -n $content >>${dir}content
+ else
+ 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 "+%Y-%m-%d %H:%M:%S"` IPv6 无变化,当前 ipv6 为 $last_IPv6" >> ${logfile};fi
+ elif [ ! -z "$IPv6" ] ; then
+ if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 当前 IPv6: ${IPv6}" >> ${logfile};fi
+ if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 上次 IPv6: ${last_IPv6}" >> ${logfile};fi
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】当前IPv6:${IPv6}" >> ${logfile}
+ echo IPv4 $IPv4 > ${dir}ip
+ echo -e IPv6 $IPv6 >> ${dir}ip
+
+ if [ -f "${dir}title" ] ; then local title=`cat ${dir}title` ;fi
+ if [ -f "${dir}content" ] ; then local content=`cat ${dir}content` ;fi
+ if ( echo ${title} | grep -q "IPv6 地址变化" ) || [ -z "$title" ] ; then
+ local title="IPv6 地址变化"
+ else
+ local title="设备状态变化"
+ fi
+
+ local content="%0D%0A%0D%0A---%0D%0A%0D%0A""####IPv6 地址变化%0D%0A%0D%0A>当前 IPv6:${IPv6}"
+ echo $title >${dir}title
+ echo -n $content >>${dir}content
+ else
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】获取 IPv6 地址失败" >> ${logfile}
+ fi
+ fi
+ else
+ 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
+ if [ -f "${dir}title" ] ; then local title=`cat ${dir}title` ;fi
+ if [ -f "${dir}content" ] ; then local content=`cat ${dir}content` ;fi
+ local title="路由器重新启动"
+ local content="%0D%0A%0D%0A---%0D%0A%0D%0A""####路由器重新启动"
+ if [ ! -z "$serverchan_ipv4" ] && [ "$serverchan_ipv4" -ne "0" ] ;then local content=${content}"%0D%0A%0D%0A>当前IP:${IPv4}";fi
+ if [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv6" -ne "0" ] ;then local content=${content}"%0D%0A%0D%0A>当前IPv6:${IPv6}";fi
+ echo $title >${dir}title
+ echo -n $content >>${dir}content
+ fi
+}
+
+# 查询 mac 地址
+function getmac(){
+ if [ -f "${dir}ipAddress" ] ; then local ip_mac=$( cat ${dir}ipAddress | grep -w $1 |awk '{print $2}' | grep -v "^$" | sort -u );fi
+ if ( echo "$ip_mac" | grep -q "unknown" ) || [ -z "$ip_mac" ] ; then local ip_mac=$( cat /var/dhcp.leases | grep -w $1 |awk '{print $2}' | grep -v "^$" | sort -u );fi
+ if ( echo "$ip_mac" | grep -q "unknown" ) || [ -z "$ip_mac" ] ; then local ip_mac=$( cat /proc/net/arp | grep -w $1 |awk '{print $4}' | grep -v "^$" | sort -u );fi
+ if [ -z "$ip_mac" ] ; then local ip_mac="unknown";fi
+ echo "$ip_mac"
+}
+
+# 查询主机名
+function getname(){
+ if [ -f "${dir}ipAddress" ] ; then local ip_name=$( cat ${dir}ipAddress | grep -w $1 |awk '{print $3}' | grep -v "^$" | sort -u );fi
+ if ( echo "$ip_name" | grep -q "unknown" ) || [ -z "$ip_name" ] ; then local ip_name=$( echo "$device_aliases" | grep -i $2 |awk '{print $2}' | grep -v "^$" | sort -u );fi
+ if ( echo "$ip_name" | grep -q "unknown" ) || [ -z "$ip_name" ] ; then local ip_name=$( cat /var/dhcp.leases | grep -w $1 |awk '{print $4}' | grep -v "^$" | sort -u );fi
+ if [ -z "$ip_name" ] ; then local ip_name="unknown";fi
+ echo "$ip_name"
+}
+
# 检测设备上线
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
- 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
-
- 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 )
- else
- ip_name=$( cat /var/dhcp.leases | grep -w $1 |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
-
+ local ip_mac=`getmac $1`
+ local ip_name=`getname $1 $ip_mac`
+
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 10 -w $up_timeout $1`
-
if ( ! echo ${ip_ms} | grep -q ms );then
- sleep 1
+ enable_detection 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
+ fi
# 如果连接成功
if ( echo ${ip_ms} | grep -q ms ); then
- LockFile
+ LockFile lock
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 "+%Y-%m-%d %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"
- 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"
- if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] ; then echo "`date "+%Y-%m-%d %H:%M:%S"` 获取 $1 设备名超时,跳过" >> ${logfile};fi
- fi
# 如果定时任务没有运行
+ local send_enable=`get_config send_enable`
if [ ! -z "$send_enable" ] && [ "$send_enable" -ne 3 ] ; then
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 [ -f "${dir}title" ] ; then local title=`cat ${dir}title` ;fi
+ if [ -f "${dir}content" ] ; then local content=`cat ${dir}content` ;fi
if [ -z "$title" ] ; then
- title="$ip_name 连接了你的路由器"
- content="%0D%0A%0D%0A---%0D%0A%0D%0A####新设备连接%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端 MAC:%26ensp%3b%26ensp%3b$ip_mac"
+ local title="$ip_name 连接了你的路由器"
+ local content="%0D%0A%0D%0A---%0D%0A%0D%0A####新设备连接%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端 MAC:%26ensp%3b%26ensp%3b$ip_mac"
elif ( echo ${title} | grep -q "连接了你的路由器" ) ; then
- title="$ip_name 连接了你的路由器"
- content="%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端 MAC:%26ensp%3b%26ensp%3b$ip_mac"
+ local title="$ip_name 连接了你的路由器"
+ local content="%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端 MAC:%26ensp%3b%26ensp%3b$ip_mac"
else
- title="设备状态变化"
- content="%0D%0A%0D%0A---%0D%0A%0D%0A####新设备连接%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端 MAC:%26ensp%3b%26ensp%3b$ip_mac"
+ local title="设备状态变化"
+ local content="%0D%0A%0D%0A---%0D%0A%0D%0A####新设备连接%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端 MAC:%26ensp%3b%26ensp%3b$ip_mac"
fi
echo "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】新设备 $ip_name $1 连接了">> ${logfile}
if [ ! -z "$serverchan_blacklist" ] ; then
- title="你偷偷关注的设备上线了"
+ local title="你偷偷关注的设备上线了"
fi
echo $title >${dir}title
@@ -417,18 +487,13 @@ if [ "$1" ] ;then
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
- unset content
fi
echo "$1 $ip_mac $ip_name `date +%s` `iw dev $serverchan_interface station dump | grep Station | grep -i -w $ip_mac | sed -nr 's#^.*on (.*))#\1#gp'`" >> ${dir}ipAddress
else
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
+ LockFile unlock
fi
- unset ip_ms
fi
}
@@ -436,36 +501,18 @@ fi
function down(){
if [ ! -f "${dir}ipAddress" ] ; then return;fi
if [ "$1" ] ;then
- send_enable=`get_config send_enable`
- local temp_send_enable="$send_enable"
- ip_mac=$( cat ${dir}ipAddress | 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
- 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 "+%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
- 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" ] ; then ip_mac="unknown";fi
- if [ -z "$ip_name" ] ; then ip_name="unknown";fi
- echo "$1 $ip_mac $ip_name $time_up" >> ${dir}ipAddress
- fi
+ local ip_mac=`getmac $1`
+ local ip_name=`getname $1 $ip_mac`
+
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`
if ( ! echo ${ip_ms} | grep -q ms );then
- sleep 1
+ enable_detection 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
-
- send_enable=`get_config send_enable`
- if [ "$temp_send_enable" -ne "$send_enable" ] ; then return;fi
+ fi
if ( echo ${ip_ms} | grep -q ms ); then
# 如果连接成功
@@ -473,28 +520,29 @@ if [ "$1" ] ;then
# 如果连接失败
else
- LockFile
+ LockFile lock
# 如果定时任务没有运行
+ local send_enable=`get_config send_enable`
if [ ! -z "$send_enable" ] && [ "$send_enable" -ne 3 ] && [ ! -z "$ip_ms" ] ; then
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="%0D%0A%0D%0A总计流量: %26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_total";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 [ -f "${dir}title" ] ; then local title=`cat ${dir}title` ;fi
+ if [ -f "${dir}content" ] ; then local content=`cat ${dir}content` ;fi
+ local ip_total=`usage_ip $1` && if [ ! -z "$ip_total" ] ; then local ip_total="%0D%0A%0D%0A总计流量: %26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_total";fi
+ local time_down=`date +%s`
+ local time_up=$( cat ${dir}ipAddress | grep -w $1 |awk '{print $4}' | grep -v "^$" | sort -u )
+ local time1=$(($time_down-$time_up))
+ local time1=`time_for_humans $time1`
if [ -z "$title" ] ; then
- title="$ip_name 断开连接"
- content="%0D%0A%0D%0A---%0D%0A%0D%0A####设备断开连接%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP: %26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端MAC: %26ensp%3b%26ensp%3b$ip_mac$ip_total%0D%0A%0D%0A在线时间: %26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$time1"
+ local title="$ip_name 断开连接"
+ local content="%0D%0A%0D%0A---%0D%0A%0D%0A####设备断开连接%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP: %26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端MAC: %26ensp%3b%26ensp%3b$ip_mac$ip_total%0D%0A%0D%0A在线时间: %26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$time1"
elif ( echo ${title} | grep -q "断开连接" ) ; then
- title="$ip_name 断开连接"
- content="%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端MAC:$ip_mac$ip_total%0D%0A%0D%0A在线时间:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$time1"
+ local title="$ip_name 断开连接"
+ local content="%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端MAC:$ip_mac$ip_total%0D%0A%0D%0A在线时间:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$time1"
else
- title="设备状态变化"
- content="%0D%0A%0D%0A---%0D%0A%0D%0A####设备断开连接%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端MAC:$ip_mac$ip_total%0D%0A%0D%0A在线时间:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$time1"
+ local title="设备状态变化"
+ local content="%0D%0A%0D%0A---%0D%0A%0D%0A####设备断开连接%0D%0A%0D%0A客户端名:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_name%0D%0A%0D%0A客户端 IP:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$1%0D%0A%0D%0A客户端MAC:$ip_mac$ip_total%0D%0A%0D%0A在线时间:%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$time1"
fi
echo "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】设备 $ip_name $1 断开连接 " >> ${logfile}
@@ -505,75 +553,194 @@ if [ "$1" ] ;then
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
- unset content
fi
- rm -f ${dir}serverchan.lock >/dev/null 2>&1
+ LockFile unlock
fi
unset ip_ms
fi
}
+# 当前设备列表
+function current_device(){
+ local content=`cat ${dir}content`
+ if [ -f ${dir}usage.db ] ; then local ip_total_db="总计流量%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b";fi
+ content="%0D%0A%0D%0A---%0D%0A%0D%0A####现有在线设备 `grep -c "" ${dir}ipAddress` 台,具体如下%0D%0A%0D%0A#####IP 地址%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_total_db客户端名"
+ local IPLIST=$( cat ${dir}ipAddress | awk '{print $1}' )
+ for ip in $IPLIST; do
+ local ip_total=`usage_ip $ip`
+ local ip_mac=`getmac $ip`
+ local ip_name=`getname $ip $ip_mac`
+ if [ "${#ip_name}" -gt "18" ] ; then local ip_name=`echo ${ip_name:0:18}"*"`;fi
+ n=`expr 16 - ${#ip}`
+ for i in `seq 1 $n`
+ do
+ local ip=$ip"%26ensp%3b"
+ done
+ unset i && unset n
+
+ if [ ! -z "$ip_total" ] ; then
+ n=`expr 12 - ${#ip_total}`
+ for i in `seq 1 $n`
+ do
+ local ip_total=$ip_total"%26ensp%3b"
+ done
+ fi
+ unset i && unset n
+
+ local content=${content}"%0D%0A%0D%0A$ip$ip_total$ip_name"
+ done
+ echo -n $content >>${dir}content
+}
+
# 获取SOC温度
function soc_temp(){
cat /sys/class/thermal/thermal_zone*/temp | sort | sed '$!d' | cut -c-2 2>/dev/null
- # 取所有传感器数值中的最大值
+}
+
+# 检测 cpu 状态
+function cpu_load(){
+ local cpu_Alert=0
+ # 负载状态报警
+ if [ ! -z "$cpuload_enable" ] && [ "$cpuload_enable" -eq "1" ] && [ `get_config send_enable` -ne 3 ] ; then
+ 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
+ local cpu_fuzai=`cat /proc/loadavg | awk '{print $1}' 2>/dev/null`
+ local cpuload=`get_config cpuload`
+ if [ ! -z "$cpu_fuzai" ] && [ ! -z "$cpuload" ] && [ `expr $cpu_fuzai \> $cpuload` -eq "1" ] ; then
+ 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 [ "$((`date +%s`-$cpuload_time))" -ge "300" ] && [ -z "$cpucd_time" ] ; then
+ if [ -f "${dir}title" ] ; then local title=`cat ${dir}title` ;fi
+ if [ -f "${dir}content" ] ; then local content=`cat ${dir}content` ;fi
+ local title="CPU 负载过高!"
+ local cpu_Alert=1
+ if [ -z "$cpucd_time" ] ; then cpucd_time=1;fi
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】 CPU 负 载过高: ${cpu_fuzai}" >> ${logfile}
+ local 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 [ "$((`date +%s`-$cpuload_time))" -ge "3300" ] ;then
+ unset cpucd_time
+ fi
+ fi
+
+ # 温度状态报警
+ if [ ! -z "$temperature_enable" ] && [ "$temperature_enable" -eq "1" ] && [ `get_config send_enable` -ne 3 ] ; then
+ 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
+ local cpu_wendu=`soc_temp`
+ local temperature=`get_config temperature`
+ if [ ! -z "$cpu_wendu" ] && [ ! -z "$temperature" ] && [ "$cpu_wendu" -gt "$temperature" ] ; then
+ 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_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 [ "$((`date +%s`-$temperature_time))" -ge "300" ] && [ -z "$temperaturecd_time" ] ; then
+ if [ -f "${dir}title" ] ; then local title=`cat ${dir}title` ;fi
+ if [ -f "${dir}content" ] ; then local content=`cat ${dir}content` ;fi
+ if [ ! -z "$title" ] && ( echo ${title} | grep -q "过高" ) ; then
+ local title="设备报警!"
+ else
+ local title="CPU 温度过高!"
+ fi
+ local cpu_Alert=1
+ if [ -z "$temperaturecd_time" ] ; then temperaturecd_time=1;fi
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【微信推送】 CPU 温 度过高: ${cpu_wendu}" >> ${logfile}
+ local 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 [ "$((`date +%s`-$temperature_time))" -ge "3300" ] ;then
+ unset temperaturecd_time
+ fi
+ fi
+
+ if [ ! -z "$cpu_Alert" ] && [ "$cpu_Alert" -eq "1" ] ; then
+ top -bn 1 >${dir}top
+ local content="%0D%0A%0D%0A---%0D%0A%0D%0A""####当前 CPU 占用前三的进程"
+ local i=1 && local 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
+ local content=${content}"%0D%0A%0D%0A>`cat ${dir}top | awk 'NR=='$top_i | awk '{print $8" "$7}'`"
+ local i=`expr $i + 1`
+ fi
+ local top_i=`expr $top_i + 1`
+ done
+ echo -n $content >>${dir}content
+ rm -f ${dir}top >/dev/null 2>&1
+ fi
}
# 发送定时数据
function send(){
- echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】创建定时任务" >> ${logfile}
uci set serverchan.serverchan.send_enable=3
uci commit serverchan
- unset title
- unset content
- send_content=""
+ read_config
+ deltemp
serverchan_cron
- serverchan_disturb
- send_title=`get_config send_title`
- 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"" 平均负载:`cat /proc/loadavg | awk '{print $1" "$2" "$3}'`";fi
- if [ ! -z "$router_status" ] && [ "$router_status" -eq "1" ] ; then send_content=${send_content}"%0D%0A%0D%0A"" CPU占用:`getcpu`";fi
- 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:`soc_temp`%e2%84%83";fi
- router_wan=`get_config router_wan`
- ipv4_interface=$(get_config ipv4_interface)
- ipv6_interface=$(get_config ipv6_interface)
- ipv4_URL=`get_config ipv4_URL`
- if [ -z "$ipv4_URL" ] ; then ipv4_URL="members.3322.org/dyndns/getip";fi
- ipv6_URL=`get_config ipv6_URL`
- if [ -z "$ipv6_URL" ] ; then ipv6_URL="v6.ip.zxinc.org/getip";fi
- if [ ! -z "$ipv4_interface" ] ; then send_wanIP=$(/sbin/ifconfig $ipv4_interface | awk '/inet addr/ {print $2}' | awk -F: '{print $2}'| grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}');fi
- if [ -z "$ipv4_interface" ] ; then 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}');fi
- if [ ! -z "$ipv6_interface" ] ; then send_wanIPv6=$(ip addr show $ipv6_interface |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);fi
- if [ -z "$ipv6_interface" ] ; then 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);fi
- if [ ! -z "$ipv4_interface" ] ; then send_hostIP=$(curl -k -s -4 --interface $ipv4_interface $ipv4_URL);fi
- if [ -z "$ipv4_interface" ] ; then send_hostIP=$(curl -k -s -4 $ipv4_URL);fi
- if [ ! -z "$ipv6_interface" ] ; then send_hostIPv6=$(curl -k -s -6 --interface $send_wanIPv6 $ipv6_URL);fi
- if [ -z "$ipv6_interface" ] ; then send_hostIPv6=$(curl -k -s -6 $ipv6_URL);fi
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】创建定时任务" >> ${logfile}
+ local send_title=`get_config send_title`
+ if [ -z "$send_title" ] ; then local send_title="路由状态:";fi
+ local router_status=`get_config router_status`
+ if [ ! -z "$router_status" ] && [ "$router_status" -eq "1" ] ; then local 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 local send_content=${send_content}"%0D%0A%0D%0A"" 平均负载:`cat /proc/loadavg | awk '{print $1" "$2" "$3}'`";fi
+ if [ ! -z "$router_status" ] && [ "$router_status" -eq "1" ] ; then local send_content=${send_content}"%0D%0A%0D%0A"" CPU占用:`getcpu`";fi
+ if [ ! -z "$router_status" ] && [ "$router_status" -eq "1" ] ; then local 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 local 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
+ local router_temp=`get_config router_temp`
+ if [ ! -z "$router_temp" ] && [ "$router_temp" -eq "1" ] ; then local send_content=${send_content}"%0D%0A%0D%0A""---%0D%0A%0D%0A#### 设备温度%0D%0A%0D%0A CPU:`soc_temp`%e2%84%83";fi
+ local router_wan=`get_config router_wan`
+ local ipv4_interface=$(get_config ipv4_interface)
+ local ipv6_interface=$(get_config ipv6_interface)
+ local ipv4_URL=`get_config ipv4_URL`
+ if [ -z "$ipv4_URL" ] ; then local ipv4_URL="members.3322.org/dyndns/getip";fi
+ local ipv6_URL=`get_config ipv6_URL`
+ if [ -z "$ipv6_URL" ] ; then local ipv6_URL="v6.ip.zxinc.org/getip";fi
+ if [ ! -z "$ipv4_interface" ] ; then local send_wanIP=$(/sbin/ifconfig $ipv4_interface | awk '/inet addr/ {print $2}' | awk -F: '{print $2}'| grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}');fi
+ if [ -z "$ipv4_interface" ] ; then local 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}');fi
+ if [ ! -z "$ipv6_interface" ] ; then local send_wanIPv6=$(ip addr show $ipv6_interface |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);fi
+ if [ -z "$ipv6_interface" ] ; then local 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);fi
+ if [ ! -z "$ipv4_interface" ] ; then local send_hostIP=$(curl -k -s -4 --interface $ipv4_interface $ipv4_URL);fi
+ if [ -z "$ipv4_interface" ] ; then local send_hostIP=$(curl -k -s -4 $ipv4_URL);fi
+ if [ ! -z "$ipv6_interface" ] ; then local send_hostIPv6=$(curl -k -s -6 --interface $send_wanIPv6 $ipv6_URL);fi
+ if [ -z "$ipv6_interface" ] ; then local send_hostIPv6=$(curl -k -s -6 $ipv6_URL);fi
if [ ! -z "$router_wan" ] && [ "$router_wan" -eq "1" ] ; then
- send_content=${send_content}"%0D%0A%0D%0A""---%0D%0A%0D%0A#### WAN 口信息%0D%0A%0D%0A 接口ip:$send_wanIP"
- send_content=${send_content}"%0D%0A%0D%0A"" 外网ip:$send_hostIP"
- send_content=${send_content}"%0D%0A%0D%0A"" ipv6 :$send_wanIPv6"
- send_content=${send_content}"%0D%0A%0D%0A"" 外网v6:$send_hostIPv6"
+ local send_content=${send_content}"%0D%0A%0D%0A""---%0D%0A%0D%0A#### WAN 口信息%0D%0A%0D%0A 接口ip:$send_wanIP"
+ local send_content=${send_content}"%0D%0A%0D%0A"" 外网ip:$send_hostIP"
+ local send_content=${send_content}"%0D%0A%0D%0A"" ipv6 :$send_wanIPv6"
+ local send_content=${send_content}"%0D%0A%0D%0A"" 外网v6:$send_hostIPv6"
if [ ! -z "$send_content" ] && [ ! -z "$router_wan" ] ; then
- if ( ! echo ${send_wanIP} | grep -q -w ${send_hostIP} );then send_content=${send_content}"%0D%0A%0D%0A"" 外网 ip 与接口 ip 不一致,你的 ip 不是公网 ip";fi
+ if ( ! echo ${send_wanIP} | grep -q -w ${send_hostIP} );then local send_content=${send_content}"%0D%0A%0D%0A"" 外网 ip 与接口 ip 不一致,你的 ip 不是公网 ip";fi
else
- send_content=${send_content}"%0D%0A%0D%0A"" ip 获取失败"
+ local send_content=${send_content}"%0D%0A%0D%0A"" ip 获取失败"
fi
- send_content=${send_content}"%0D%0A%0D%0A""`ubus call network.interface.wan status | grep \"uptime\" | sed $'s/\"uptime": //g'| sed $'s/\,//g'| 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)}'`"
+ local send_content=${send_content}"%0D%0A%0D%0A""`ubus call network.interface.wan status | grep \"uptime\" | sed $'s/\"uptime": //g'| sed $'s/\,//g'| 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
- client_list=`get_config client_list`
+ local client_list=`get_config client_list`
if [ ! -z "$client_list" ] && [ "$client_list" -eq "1" ] ; then
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 "+%Y-%m-%d %H:%M:%S"` 【定时数据】开始进行设备下线检测" >> ${logfile};fi
- IPLIST=$( cat ${dir}ipAddress| awk '{print $1}' | grep -v "^$" | sort -u )
+ local IPLIST=$( cat ${dir}ipAddress| awk '{print $1}' | grep -v "^$" | sort -u )
for ip in $IPLIST; do
if [ ! -z "$ip" ] ; then
down $ip &
@@ -581,92 +748,67 @@ function send(){
done
wait
+ unset IPLIST
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
+ local IPLIST=$( cat /proc/net/arp | grep "0x2" | awk '{print $1}' | grep -v "^$" | sort -u )
+ for ip in $IPLIST; do
if [ ! -z "$ip" ] ; then
up $ip &
fi
done
wait
- send_content=${send_content}"%0D%0A%0D%0A---%0D%0A%0D%0A#### 在线设备%0D%0A%0D%0A";
- IPLIST=$( cat ${dir}ipAddress | awk '{print $1}' )
- for ip in $IPLIST; do
- 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`
- ip_name=$( cat ${dir}ipAddress | grep -w $ip | awk '{print $3}' | grep -v "^$" | sort -u )
- if [ "${#ip_name}" -gt "20" ] ; then ip_name=`echo ${ip_name:0:20}"*"`;fi
- send_content=${send_content}"%0D%0A%0D%0A $ip_name $ip%0D%0A%0D%0A $ip_total在线 $time1%0D%0A%0D%0A ----"
+ local send_content=${send_content}"%0D%0A%0D%0A---%0D%0A%0D%0A#### 在线设备%0D%0A%0D%0A";
+
+ unset IPLIST
+ local IPLIST=$( cat ${dir}ipAddress | awk '{print $1}' )
+ for ip in $IPLIST; do
+ local ip_total=`usage_ip $ip` && if [ ! -z "$ip_total" ] ; then local ip_total="总计流量:$ip_total ";fi
+ local time_down=`date +%s`
+ local time_up=$( cat ${dir}ipAddress | grep -w $ip |awk '{print $4}' | grep -v "^$" | sort -u )
+ local time1=$(($time_down-$time_up))
+ local time1=`time_for_humans $time1`
+ local ip_mac=`getmac $ip`
+ local ip_name=`getname $ip $ip_mac`
+ if [ "${#ip_name}" -gt "20" ] ; then local ip_name=`echo ${ip_name:0:20}"*"`;fi
+ local send_content=${send_content}"%0D%0A%0D%0A $ip_name $ip%0D%0A%0D%0A $ip_total在线 $time1%0D%0A%0D%0A ----"
done
fi
- if [ ! -z "$device_name" ] ; then send_title="【$device_name】$send_title" ;fi
- send_title=$( echo $send_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/')
- #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 "+%Y-%m-%d %H:%M:%S"` 【定时数据】进行 URL 编码,标题=$send_title" >> ${logfile};fi
+ if [ ! -z "$device_name" ] ; then local send_title="【$device_name】$send_title" ;fi
+ local send_title=$( echo $send_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')
+ 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---";
+ local send_content="%0D%0A%0D%0A---%0D%0A%0D%0A#### 我遇到了一个难题%0D%0A%0D%0A>你没有选择需要发送的项目,该怎么办呢%0D%0A%0D%0A---";
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 "+%Y-%m-%d %H:%M:%S"` 【定时数据】当前为免打扰时间,消息不发送" >> ${logfile};fi
- fi
+
+ local nowtime=`date "+%Y-%m-%d %H:%M:%S"`
+ disturb=`serverchan_disturb`
+ if [ $disturb -eq "0" ] ;then
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【免打扰】当前为免打扰时间,消息不发送" >> ${logfile}
else
curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${send_title}" -d "&desp=${nowtime}%0D%0A%0D%0A${send_content}" >/dev/null
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【定时数据】微信推送" >> ${logfile}
fi
uci set serverchan.serverchan.send_enable=0
uci commit serverchan
- 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
- exit
-fi
-
-serverchan_cron
-serverchan_init
-serverchan_disturb
-
# 初始化在线设备列表
function serverchan_first(){
if [ ! -z "$serverchan_enable" ] && [ "$serverchan_enable" -eq "1" ] ; then
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 )
+ local IPLIST=$( cat /proc/net/arp | grep "0x2" | awk '{print $1}' | grep -v "^$" | sort -u )
> ${dir}ipAddress
- for ip in $IPLIST; do
+ for ip in $IPLIST; do
# 如果 “ip 列表不为空”
- if [ ! -z "$ip" ] ; 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 )
- else
- ip_name=$( cat /var/dhcp.leases | grep -w $ip |awk '{print $4}' | grep -v "^$" | sort -u )
- fi
-
- if [ -z "$ip_name" ] ; then
- temp_ms=`ping -c 1 -w 2 $ip` &
- fi
- if [ -z "$ip_mac" ] ; then ip_mac="unknown";fi
- if [ -z "$ip_name" ] ; then ip_name="unknown";fi
+ if [ ! -z "$ip" ] ; then
+ local ip_mac=`getmac $ip`
+ local ip_name=`getname $ip $ip_mac`
up $ip &
-
fi
done
wait
@@ -675,343 +817,74 @@ if [ ! -z "$serverchan_enable" ] && [ "$serverchan_enable" -eq "1" ] ; then
echo "`date "+%Y-%m-%d %H:%M:%S"` 【初始化】初始化完成" >> ${logfile}
fi
}
+
+# 启动参数
+if [ "$1" ] ;then
+ if [ $1 = "send" ] ;then send;fi
+ if [ $1 = "crontab" ] ;then serverchan_cron;fi
+ exit
+fi
+
+# 初始化
+serverchan_cron
+read_config
+serverchan_init
serverchan_first
+# 循环
while [ "$serverchan_enable" -eq "1" ] ;
do
-if [ -f ${logfile} ] ; then clean_log;fi
- read_config
-
-function rand_geturl(){
- urllist="https://www.163.com https://www.qq.com https://www.baidu.com https://www.qidian.com https://www.douban.com"
- url_str=$( echo "$urllist" | awk -v i="`awk 'BEGIN{srand();sum=rand()*5+ 1;printf("%d",sum)}'`" '{print $i}' )
- check=`curl -k -s -w "%{http_code}" $url_str -A "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11" -o /dev/null`
-}
+ deltemp
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 "+%Y-%m-%d %H:%M:%S"` 【网络状态】网络恢复正常.." >> ${logfile};fi
- network_enable="200"
-
- # 外网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 "+%Y-%m-%d %H:%M:%S"` 【外网IP】正在检测外网IP变化" >> ${logfile};fi
- nowtime=`date "+%Y-%m-%d %H:%M:%S"`
- # 查询当前 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
- 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历史记录
- 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 "+%Y-%m-%d %H:%M:%S"` IP 无变化,当前 ip 为 $last_IPv4" >> ${logfile};fi
- elif [ ! -z "$IPv4" ] ; then
- 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
-
- 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 "IP 地址变化" ) || [ -z "$title" ] ; then
- title="IP 地址变化"
- else
- title="设备状态变化"
- fi
-
- content="%0D%0A%0D%0A---%0D%0A%0D%0A""####IP 地址变化%0D%0A%0D%0A>当前 IP:${IPv4}"
- echo $title >${dir}title
- echo -n $content >>${dir}content
- else
- 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 "+%Y-%m-%d %H:%M:%S"` IPv6 无变化,当前 ipv6 为 $last_IPv6" >> ${logfile};fi
- elif [ ! -z "$IPv6" ] ; then
- 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
-
- 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 "IPv6 地址变化" ) || [ -z "$title" ] ; then
- title="IPv6 地址变化"
- else
- title="设备状态变化"
- fi
-
- content="%0D%0A%0D%0A---%0D%0A%0D%0A""####IPv6 地址变化%0D%0A%0D%0A>当前 IPv6:${IPv6}"
- echo $title >${dir}title
- echo -n $content >>${dir}content
- else
- echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】获取 IPv6 地址失败" >> ${logfile}
- fi
- fi
-
- else
- unset last_IPv4
- unset last_IPv6
- 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
-
- if [ -f "${dir}title" ] ; then title=`cat ${dir}title` ;fi
- if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
- 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
- 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 "+%Y-%m-%d %H:%M:%S"` 【离线】开始进行设备下线检测" >> ${logfile};fi
- fi
- read_config
- # 从 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 )
- if [ ! -z ipAddress_name ] && ( ! echo $ip_name | grep -q $ipAddress_name ) ; then
- 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 "/$ip/d" ${dir}ipAddress
- echo "$ip $ip_mac $ip_name $time_up" >> ${dir}ipAddress
- fi
- 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
-
- down $ip &
-
- 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 "+%Y-%m-%d %H:%M:%S"` 【连接】开始进行设备接入检测" >> ${logfile};fi
- fi
- read_config
- # 从 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`
- 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 )
- else
- ip_name=$( cat /var/dhcp.leases | grep -w $ip |awk '{print $4}' | grep -v "^$" | sort -u )
- fi
-
- if [ -z "$ip_name" ] ; then
- temp_ms=`ping -c 1 -w 2 $ip` &
- fi
- if [ -z "$ip_mac" ] ; then ip_mac="unknown";fi
- if [ -z "$ip_name" ] ; then ip_name="unknown";fi
-
- up $ip &
-
- 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
- else
- usage
- fi
-
- if [ -f "${dir}content" ] ; then
- content=`cat ${dir}content`
- if [ -f ${dir}usage.db ] ; then ip_total_db="总计流量%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b";fi
- content="%0D%0A%0D%0A---%0D%0A%0D%0A####现有在线设备 `grep -c "" ${dir}ipAddress` 台,具体如下%0D%0A%0D%0A#####IP 地址%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b%26ensp%3b$ip_total_db客户端名"
- IPLIST=$( cat ${dir}ipAddress | awk '{print $1}' )
- for ip in $IPLIST; do
- ip_total=`usage_ip $ip`
- #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`
- ip_name=$( cat ${dir}ipAddress | grep -w $ip | awk '{print $3}' | grep -v "^$" | sort -u )
- if [ "${#ip_name}" -gt "18" ] ; then ip_name=`echo ${ip_name:0:18}"*"`;fi
- n=`expr 16 - ${#ip}`
- for i in `seq 1 $n`
- do
- ip=$ip"%26ensp%3b"
- done
-
- if [ ! -z "$ip_total" ] ; then
- n=`expr 12 - ${#ip_total}`
- for i in `seq 1 $n`
- do
- ip_total=$ip_total"%26ensp%3b"
- done
- fi
- content=${content}"%0D%0A%0D%0A$ip$ip_total$ip_name"
- done
- echo -n $content >>${dir}content
- fi
-
- cpu_Alert=0
- # 负载状态报警
- if [ ! -z "$cpuload_enable" ] && [ "$cpuload_enable" -eq "1" ] ; then
- 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 "$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 [ "$((`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
- 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 [ "$((`date +%s`-$cpuload_time))" -ge "3300" ] ;then
- unset cpucd_time
- fi
- fi
-
- # 温度状态报警
- if [ ! -z "$temperature_enable" ] && [ "$temperature_enable" -eq "1" ] ; then
- 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 "$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_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 [ "$((`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
- title="设备报警!"
- else
- title="CPU 温度过高!"
- fi
- cpu_Alert=1
- 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 [ "$((`date +%s`-$temperature_time))" -ge "3300" ] ;then
- unset temperaturecd_time
- 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 "+%Y-%m-%d %H:%M:%S"` 【!!!!】当前网络不通!停止检测! " >> ${logfile}
- network_enable="404"
- fi
- enable_detection $sleeptime
- continue
+ usage
+ # 外网IP变化检测
+ if [ ! -z "$serverchan_ipv4" ] && [ ! -z "$serverchan_ipv6" ] && [ "$serverchan_ipv4" -ne "0" ] || [ "$serverchan_ipv6" -ne "0" ] ; then
+ ip_changes
fi
+
+ # 设备下线检测
+ # 从 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
+ if [ ! -z "$ip" ] && [ `get_config send_enable` -ne 3 ] ; then
+ down $ip &
+ 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
+ unset IPLIST && unset IPLISTrow
+
+ # 新设备接入检测
+ # 从 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 列表不为空”
+ if [ ! -z "$ip" ] && [ `get_config send_enable` -ne 3 ] ; then
+ up $ip &
+ 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
+ else
+ usage
+ fi
+ unset IPLIST && unset IPLISTrow
+
+ # 当前设备列表
+ if [ -f "${dir}content" ] && [ `get_config send_enable` -ne 3 ] ; then
+ current_device
+ fi
+
+ # CPU 检测
+ cpu_load
send_enable=`get_config send_enable`
if [ ! -z "$send_enable" ] && [ "$send_enable" -eq "3" ] ;then
send_str=0
+ deltemp
while [ $send_enable -eq "3" ] ;
do
if [ ! -z "$debuglevel" ] && [ "$debuglevel" -ne "1" ] && [ "$send_str" -eq "0" ] ; then
@@ -1027,38 +900,22 @@ function rand_geturl(){
continue
fi
- enable_detection
-
-function serverchan_send(){
- if [ -f "${dir}title" ] ; then title=`cat ${dir}title` ;fi
- if [ -f "${dir}content" ] ; then content=`cat ${dir}content` ;fi
- if [ ! -z "$title" ] && [ ! -z "$content" ] ; then
+ if [ -f "${dir}title" ] && [ -f "${dir}content" ] ; then
+ title=`cat ${dir}title`
+ content=`cat ${dir}content`
nowtime=`date "+%Y-%m-%d %H:%M:%S"`
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/')
+ 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')
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 "+%Y-%m-%d %H:%M:%S"` 当前为免打扰时间,消息不发送" >> ${logfile};fi
- fi
+ disturb=`serverchan_disturb`
+ if [ $disturb -eq "0" ] ;then
+ echo "`date "+%Y-%m-%d %H:%M:%S"` 【免打扰】当前为免打扰时间,消息不发送" >> ${logfile}
else
curl -s "http://sc.ftqq.com/$serverchan_sckey.send?text=${title}" -d "&desp=${nowtime}%0D%0A%0D%0A${content}" >/dev/null
fi
fi
- unset title
- unset content
- rm -f ${dir}title >/dev/null 2>&1
- rm -f ${dir}content >/dev/null 2>&1
+ deltemp
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
-
continue
done
-echo "`date "+%Y-%m-%d %H:%M:%S"` 【!!!】程序未启用,退出脚本!" >> ${logfile}
-exit
\ No newline at end of file