@@ -10,7 +10,7 @@ function get_config(){
10
10
11
11
# 初始化设置信息
12
12
function read_config(){
13
- get_config " pushbot_enable" " dd_webhook" " pushbot_ipv4" " ipv4_interface" " ipv4_URL" " pushbot_ipv6" " ipv6_interface" " ipv6_URL" " pushbot_up" " pushbot_down" " pushbot_sheep" " pushbot_whitelist" " pushbot_blacklist" " pushbot_interface" " starttime" " endtime" " cpuload_enable" " cpuload" " temperature_enable" " temperature" " device_name" " err_enable" " network_err_event" " err_sheep_enable" " system_time_event" " autoreboot_time" " network_restart_time" " public_ip_event" " public_ip_retry_count" " soc_code" " sleeptime" " up_timeout" " down_timeout" " device_aliases" " debuglevel" " cpuload" " temperature" " send_mode" " regular_time" " regular_time_2" " regular_time_3" " interval_time" " thread_num" " timeout_retry_count" " send_we" " we_webhook" " pp_token" " pp_channel" " pp_webhook" " pp_topic_enable" " pp_topic" " fs_webhook" " bark_srv_enable" " bark_srv" " bark_token" " err_device_aliases" " oui_dir" " oui_data" " client_usage" " client_usage_max" " client_usage_disturb" " client_usage_whitelist" " reset_regularly"
13
+ get_config "pushbot_enable" "dd_webhook" "pushbot_ipv4" "ipv4_interface" "pushbot_ipv6" "ipv6_interface" "pushbot_up" "pushbot_down" "pushbot_sheep" "pushbot_whitelist" "pushbot_blacklist" "pushbot_interface" "starttime" "endtime" "cpuload_enable" "cpuload" "temperature_enable" "temperature" "device_name" "err_enable" "network_err_event" "err_sheep_enable" "system_time_event" "autoreboot_time" "network_restart_time" "public_ip_event" "public_ip_retry_count" "soc_code" "sleeptime" "up_timeout" "down_timeout" "device_aliases" "debuglevel" "cpuload" "temperature" "send_mode" "regular_time" "regular_time_2" "regular_time_3" "interval_time" "thread_num" "timeout_retry_count" "send_we" "we_webhook" "pp_token" "pp_channel" "pp_webhook" "pp_topic_enable" "pp_topic" "fs_webhook" "bark_srv_enable" "bark_srv" "bark_token" "err_device_aliases" "oui_dir" "oui_data" "client_usage" "client_usage_max" "client_usage_disturb" "client_usage_whitelist" "reset_regularly" "ipv4_urllist" "ipv6_urllist" "lite_enable" "content_current_device" "content_nowtime" "content_content"
14
14
for str_version in " wrtbwmon" " iputils-arping" " curl" " iw" ; do
15
15
eval ` echo ${str_version: 0: 2} " _version" ` =` opkg list-installed| grep -w ^${str_version} | awk ' {print $3}' ` 2> /dev/null
16
16
done
@@ -30,6 +30,7 @@ function read_config(){
30
30
[ ! -z " $send_we " ] && [ " $send_we " -eq " 2" ] && percentsym=25 && markdown_splitline=" %0D%0A%0D%0A" && markdown_linefeed=" %0D%0A%0D%0A" && greenfont=" " && bluefont=" " && fontend=" " && tabletab=" " && boldstar=" "
31
31
[ ! -z " $send_we " ] && [ " $send_we " -eq " 3" ] && titlel4=" " && titlebold=" 【" && titleboldend=" 】" && titleblue=" " && titlegreen=" " && titleend=" " && titlered=" " && greenfont=" " && bluefont=" " && fontend=" " && tabletab=" " && boldstar=" " && markdown_splitline=" \n---\n" && markdown_linefeed=" \n"
32
32
[ ! -z " $send_we " ] && [ " $send_we " -eq " 4" ] && titlel4=" " && titlebold=" 【" && titleboldend=" 】" && titleblue=" " && titlegreen=" " && titleend=" " && titlered=" " && greenfont=" " && bluefont=" " && fontend=" " && tabletab=" " && boldstar=" " && markdown_splitline=" %0D%0A%0D%0A" && markdown_linefeed=" %0D%0A%0D%0A" && percentsym=25 && [ -z " $bark_srv " ] && bark_srv=" https://api.day.app"
33
+ # [ ! -z "$content_content" ] && [ "$content_content" -eq "1" ] && str_title_start="" && str_title_end="" && str_splitline="" && str_linefeed="" && str_tab=""
33
34
}
34
35
35
36
# 初始化
@@ -96,17 +97,35 @@ function getip(){
96
97
[ -z " $ipv4_interface " ] && local wanIP=$( getinterfacelist| grep ' \"address\"' | grep -oE ' [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' )
97
98
echo " $wanIP "
98
99
elif [ $1 == " hostipv4" ] ; then
99
- [ -z " $ipv4_URL " ] && local ipv4_URL=" members.3322.org/dyndns/getip"
100
- [ ! -z " $ipv4_interface " ] && local hostIP=$( curl -k -s -4 --interface ${ipv4_interface} ${ipv4_URL} ) || local hostIP=$( curl -k -s -4 ${ipv4_URL} )
101
- echo " $hostIP "
100
+ function get_hostipv4()
101
+ {
102
+ [ -z " $ipv4_urllist " ] && local ipv4_urllist=" www.cip.cc myip.ipip.net ipv4.ddnspod.com ifcfg.cn speed.neu.edu.cn/getIP.php ddns.oray.com/checkip www.net.cn/static/customercare/yourip.asp"
103
+ local url_number=` expr $( echo " $ipv4_urllist " | grep -o ' ' | wc -l) + 1`
104
+ local ipv4_URL=` echo " $ipv4_urllist " | awk -v i=$( rand 1 $url_number ) ' {print $i}' `
105
+ [ ! -z " $ipv4_interface " ] && local hostIP=$( curl -k -s -4 --interface ${ipv4_interface} -m 5 ${ipv4_URL} ) || local hostIP=$( curl -k -s -4 -m 5 ${ipv4_URL} )
106
+ echo $hostIP | grep -oE ' [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -n1
107
+ }
108
+ local hostIP=` get_hostipv4`
109
+ [ -z " $hostIP " ] && local hostIP=` get_hostipv4`
110
+ [ -z " $hostIP " ] && local hostIP=` get_hostipv4`
111
+ echo $hostIP
102
112
elif [ $1 == " wanipv6" ] ; then
103
113
[ ! -z " $ipv6_interface " ] && local 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| awk ' {print $2}' )
104
114
[ -z " $ipv6_interface " ] && local 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| awk ' {print $2}' )
105
115
echo " $wanIPv6 "
106
116
elif [ $1 == " hostipv6" ] ; then
107
- [ -z " $ipv6_URL " ] && local ipv6_URL=" v6.ip.zxinc.org/getip"
108
- [ ! -z " $ipv6_interface " ] && local hostIPv6=$( curl -k -s -6 --interface ${ipv6_interface} ${ipv6_URL} ) || local hostIPv6=$( curl -k -s -6 ${ipv6_URL} )
109
- echo " $hostIPv6 "
117
+ function get_hostipv6()
118
+ {
119
+ [ -z " $ipv6_urllist " ] && local ipv6_urllist=" ip.sb ipv6.ddnspod.com api-ipv6.ip.sb/ip speed.neu6.edu.cn/getIP.php v6.myip.la/json"
120
+ local urlv6_number=` expr $( echo " $ipv6_urllist " | grep -o ' ' | wc -l) + 1`
121
+ local ipv6_URL=` echo " $ipv6_urllist " | awk -v i=$( rand 1 $url_number ) ' {print $i}' `
122
+ [ ! -z " $ipv6_interface " ] && local hostIPv6=$( curl -k -s -6 --interface ${ipv6_interface} -m 5 ${ipv6_URL} ) || local hostIPv6=$( curl -k -s -6 -m 5 ${ipv6_URL} )
123
+ echo $hostIPv6 | grep -oE ' ([\da-fA-F0-9]{1,4}(:{1,2})){1,15}[\da-fA-F0-9]{1,4}'
124
+ }
125
+ local hostIPv6=` get_hostipv6`
126
+ [ -z " $hostIPv6 " ] && local hostIPv6=` get_hostipv6`
127
+ [ -z " $hostIPv6 " ] && local hostIPv6=` get_hostipv6`
128
+ echo $hostIPv6 # 重试,偷懒,有空再优化
110
129
fi
111
130
}
112
131
@@ -321,6 +340,14 @@ function cut_str {
321
340
echo $( echo " $1 " | cut -c -$temp_length ) " *"
322
341
}
323
342
343
+ # 随机数
344
+ function rand(){
345
+ min=$1
346
+ max=$(( $2 - $min + 1 ))
347
+ num=$( date +%s%N)
348
+ echo $(( $num % $max + $min ))
349
+ }
350
+
324
351
# 在线设备列表
325
352
function pushbot_first(){
326
353
[ -f " ${dir} ipAddress" ] && local IPLIST=` cat ${dir} ipAddress| awk ' {print $1}' | grep -v " ^$" | sort -u`
@@ -347,7 +374,7 @@ function pushbot_first(){
347
374
# 创建计划任务
348
375
function pushbot_cron(){
349
376
function del_cron(){
350
- ( echo ` crontab -l` | grep -q " pushbot" ) && crontab -l > conf && sed -i " /pushbot/d" conf && crontab conf && rm -f conf > /dev/null 2>&1
377
+ ( echo ` crontab -l 2> /dev/null ` | grep -q " pushbot" ) && crontab -l > conf && sed -i " /pushbot/d" conf && crontab conf && rm -f conf > /dev/null 2>&1
351
378
}
352
379
function re_cron(){
353
380
/etc/init.d/cron stop
@@ -361,17 +388,17 @@ function pushbot_cron(){
361
388
362
389
# 重置流量
363
390
if [ ! -z " $reset_regularly " ] && [ " $reset_regularly " -eq " 1" ]; then
364
- crontab -l > conf && echo -e " 0 0 * * * rm /tmp/pushbot/usage.db >/dev/null 2>&1" >> conf && crontab conf && rm -f conf > /dev/null 2>&1
365
- crontab -l > conf && echo -e " 0 0 * * * rm /tmp/pushbot/usage6.db >/dev/null 2>&1" >> conf && crontab conf && rm -f conf > /dev/null 2>&1
391
+ crontab -l 2> /dev/null > conf && echo -e " 0 0 * * * rm /tmp/pushbot/usage.db >/dev/null 2>&1" >> conf && crontab conf && rm -f conf > /dev/null 2>&1
392
+ crontab -l 2> /dev/null > conf && echo -e " 0 0 * * * rm /tmp/pushbot/usage6.db >/dev/null 2>&1" >> conf && crontab conf && rm -f conf > /dev/null 2>&1
366
393
fi
367
394
[ ! -z " $regular_time_2 " ] && local regular_time_2=" ,${regular_time_2} "
368
395
[ ! -z " $regular_time_3 " ] && local regular_time_3=" ,${regular_time_3} "
369
396
# 定时发送
370
397
if [ ! -z " $regular_time " ] || [ ! -z " $regular_time_2 " ] || [ ! -z " $regular_time_3 " ]; then
371
- crontab -l > conf && echo -e " 0 $regular_time$regular_time_2$regular_time_3 * * * /usr/bin/pushbot/pushbot send &" >> conf && crontab conf && rm -f conf > /dev/null 2>&1
398
+ crontab -l 2> /dev/null > conf && echo -e " 0 $regular_time$regular_time_2$regular_time_3 * * * /usr/bin/pushbot/pushbot send &" >> conf && crontab conf && rm -f conf > /dev/null 2>&1
372
399
# 间隔发送
373
400
elif [ ! -z " $interval_time " ]; then
374
- crontab -l > conf && echo -e " 0 */$interval_time * * * /usr/bin/pushbot/pushbot send &" >> conf && crontab conf && rm -f conf > /dev/null 2>&1
401
+ crontab -l 2> /dev/null > conf && echo -e " 0 */$interval_time * * * /usr/bin/pushbot/pushbot send &" >> conf && crontab conf && rm -f conf > /dev/null 2>&1
375
402
fi
376
403
re_cron
377
404
}
@@ -524,10 +551,11 @@ function unattended(){
524
551
525
552
# 检测网络状态
526
553
function rand_geturl(){
527
- local urllist=" https://www.163.com https://www.qq.com https://www.baidu.com https://www.qidian.com https://www.douban.com"
528
- local url_str=$( echo " $urllist " | awk -v i=" ` awk ' BEGIN{srand();sum=rand()*5+ 1;printf("%d",sum)}' ` " ' {print $i}' )
529
554
function getcheck(){
530
- echo ` 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`
555
+ local urllist=" https://www.163.com https://www.qq.com https://www.baidu.com https://www.qidian.com https://www.douban.com"
556
+ local url_number=` expr $( echo " $urllist " | grep -o ' ' | wc -l) + 1`
557
+ local url_str=` echo " $urllist " | awk -v i=$( rand 1 $url_number ) ' {print $i}' `
558
+ echo ` curl -k -s -w " %{http_code}" -m 5 ${url_str} -A " Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36" -o /dev/null`
531
559
}
532
560
local check=` getcheck`
533
561
while [ -z " $check " ] || [ " $check " -ne " 200" ]; do
@@ -556,7 +584,7 @@ function rand_geturl(){
556
584
elif [ " $network_err_event " -eq " 2" ] ; then
557
585
[ " $retry_count " -lt " 3" ] && echo " ` date " +%Y-%m-%d %H:%M:%S" ` 【!!!!】正在尝试重启网络,当前第 $retry_count 次 " >> ${logfile} && ifup wan > /dev/null 2>&1
558
586
[ " $retry_count " -eq " 3" ] && echo " ` date " +%Y-%m-%d %H:%M:%S" ` 【!!!!】已经重启网络2次,修复失败,请主人自行修复哦 " >> ${logfile}
559
- elif [ " $network_err_event " -eq " 3" ] ; then
587
+ elif [ " $network_err_event " -eq " 3" ] ; then
560
588
if [ " $retry_count " -eq " 1" ] ; then
561
589
echo " ` date " +%Y-%m-%d %H:%M:%S" ` 【!!!!】正在尝试修复网络,当前第 1 次,重启网络服务中 " >> ${logfile} && network_restart
562
590
elif [ " $retry_count " -eq " 2" ] ; then
@@ -610,7 +638,7 @@ function rand_geturl(){
610
638
network_err_time=` expr $network_err_time - 600` && sleep 60
611
639
fi
612
640
enable_detection
613
- sleep 60
641
+ sleep $sleeptime
614
642
fi
615
643
continue
616
644
done
@@ -985,7 +1013,7 @@ while [ "$pushbot_enable" -eq "1" ]; do
985
1013
[ ! -f " ${dir} send_enable.lock" ] && down_send
986
1014
987
1015
# 当前设备列表
988
- [ ! -z " $content " ] && [ ! -f " ${dir} send_enable.lock" ] && current_device
1016
+ [ ! -z " $content " ] && [ ! -f " ${dir} send_enable.lock" ] && [ -z " $content_current_device " ] || [ " $content_current_device " -eq " 0 " ] && current_device
989
1017
990
1018
# 无人值守任务
991
1019
[ ! -f " ${dir} send_enable.lock" ] && unattended
@@ -997,9 +1025,10 @@ while [ "$pushbot_enable" -eq "1" ]; do
997
1025
[ ! -f " ${dir} send_enable.lock" ] && get_client_usage
998
1026
999
1027
if [ ! -f " ${dir} send_enable.lock" ] && [ ! -z " $title " ] && [ ! -z " $content " ]; then
1000
- nowtime=` date " +%Y-%m-%d %H:%M:%S" `
1028
+ [ -z " $content_nowtime " ] || [ " $content_nowtime " -eq " 0 " ] && nowtime=` date " +%Y-%m-%d %H:%M:%S" `
1001
1029
[ ! -z " $device_name " ] && title=" 【$device_name 】$title "
1002
1030
title=` echo " $title " | sed $' s/\ / /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' `
1031
+ [ ! -z " $content_content " ] && [ " $content_content " -eq " 1" ] && content=" "
1003
1032
pushbot_send=" curl -s \" https://oapi.dingtalk.com/robot/send?access_token=${dd_webhook} \" -H 'Content-Type: application/json' -d '{\" msgtype\" : \" markdown\" ,\" markdown\" : {\" title\" :\" ${title} \" ,\" text\" :\" ${titlel4} ${titlebold} <font color=#6A65FF>${title} </font>${titleboldend}${markdown_linefeed}${nowtime}${markdown_linefeed}${content}${markdown_linefeed}${titlebold} <font color=#6A65FF>${title} </font>${titleboldend} \" }}'"
1004
1033
wechatent_send=" curl -s \" https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${we_webhook} \" -H 'Content-Type: application/json' -d '{\" msgtype\" : \" markdown\" ,\" markdown\" : {\" title\" :\" ${title} \" ,\" content\" :\" ${titlel4} ${titlebold} <font color=#6A65FF>${title} </font>${titleboldend}${markdown_linefeed}${nowtime}${markdown_linefeed}${content}${markdown_linefeed}${titlebold} <font color=#6A65FF>${title} </font>${titleboldend} \" }}'"
1005
1034
feishu_send=" curl -X POST https://open.feishu.cn/open-apis/bot/v2/hook/${fs_webhook} -H 'Content-Type: application/json' -d '{\" msg_type\" : \" post\" ,\" content\" : {\" post\" : {\" zh_cn\" : {\" title\" : \" ${title} \" ,\" content\" : [[{\" tag\" : \" text\" ,\" text\" : \" ${nowtime}${markdown_linefeed}${content} \" }]]}}}}'"
0 commit comments