
æ°ãããµãŒãã¹ãç£èŠããå¿
èŠãçããå Žåã§ããå¿
èŠãªã€ã³ãã©ãå°éç¥èãæå
ã«ãªãããšããããŸãããã®ã¬ã€ãã§ã¯ãçµã¿èŸŒã¿ããŒã«ã®ã¿ã䜿çšããŠãããããWebãµãŒãã¹ãç£èŠããããŒã«ã30åã§å®è£
ããæ¹æ³ãã玹ä»ããŸãã ubuntubashãcronãcurlã䜿çšããŸããéç¥ã®é
ä¿¡ã«ã¯Telegramã䜿çšããŸãã
ããã§ãªãŒã»ãªã³ã»ã¶ã»ã±ãŒããã¯ãŠãŒã¶ãŒã®ææ
çãªé¢äžã«ãªããŸãã 人ã§ãã¹ããããšããã广ããããŸããã
é éå»çãµãŒãã¹ã§ãã Doctor Nearby ããŠãŒã¶ãŒã®ã¹ãã¬ã¹ ã¬ãã«ã倿ãããã£ããããããäœæãããšããã¢ãã¿ãªã³ã°ãå¿
èŠã§ããã æ°æéã§ãããŸãæ©èœããã ãã§ãªããããžãã£ããªã¡ãã»ãŒãžãå ãããããããžã§ã¯ããäœæãããŸããã
ãŸããã¹ã¯ãªãããå«ããªããžããªãååŸããŸãããã
git clone https://github.com/rshekhovtsov/msms.gitmsms ãã©ã«ããŒã«ç§»åããããã§äœæ¥ããŸãã
ãã¬ã°ã©ã ããããã¯ãããŠããå Žåã¯ããããã·ã䜿çšããŠãã ããã æãã·ã³ãã«ã§ä¿¡é Œæ§ã®é«ããªãã·ã§ã³ã¯ãã«ãœãã¯ã¹ã§ãã
sudo apt install tor
sudo apt install torsocksäŸãšããŠãgoogle.com ã¹ã¿ãŒã ããŒãžã®ç£èŠã XNUMX ã€ã®æé ã§èšå®ããŠã¿ãŸãããã
ã¹ããã 1. Telegram ã§ããããäœæãããŠãŒã¶ãŒ ID ãååŸããŸã
- é»å ±å
ã®é£çµ¡å
ã®æ€çŽ¢ããŒã§æ€çŽ¢ããŸãã :

- [ã¹ã¿ãŒã] ãã¿ã³ã§èµ·åãã/newbot ã³ãã³ããå
¥åããŠè³ªåã«çããŸãã name ã¯ãŠãŒã¶ãŒã«è¡šç€ºããããããã®ååã§ããããŠãŒã¶ãŒåã¯äžæã§ããããbotãã§çµããå¿
èŠãããããšã«æ³šæããå¿
èŠããããŸãã

ç¹ã«ãããã㯠HTTP API ã®ã·ãŒã¯ã¬ãã ããŒã¯ã³ãçºè¡ããŸãããããã³ããŒããŠãmsms ãã©ã«ããŒå ã® telegram-api-key.txt ãã¡ã€ã«ã«ä¿åããå¿ èŠããããŸãã - ãã¬ã°ã©ã ã®æ€çŽ¢ããŒã«ãããã®ååãå ¥åããèµ·åããŸãã
- æåŸã®ä»äžããšããŠãç£èŠã¢ã©ãŒãåä¿¡è
ã®ãªã¹ãã«èªåèªèº«ã远å ããŸãããã
sudo chmod +x ./recipients-setup.sh torsocks ./recipients-setup.shã¹ã¯ãªããã¯ããããžã®æè¿ã®åŒã³åºãã®ãªã¹ãã衚瀺ããŸãããã¬ã°ã©ã ã«ã¯ ID ãšååã XNUMX è¡ããã¯ãã§ãã ãã® ID ãååŸãããã¡ã€ã« services/google-recipients.txt ã«ä¿åããŸãã ãã¡ã€ã«åœ¢åŒ: åè¡ã XNUMX ã€ã® ID ã§ãã äŸïŒ
123456789 987654321
æ°ããåä¿¡è ã远å ããã«ã¯ããã¬ã°ã©ã ã§ããããèµ·åããrecipients-setup.sh ãå®è¡ããŠããã¡ã€ã«ã« ID ã远å ããããã«äŸé Œããå¿ èŠããããŸãã
ã¹ããã 2. ã¢ãã¿ãªã³ã°ãèšå®ãã
ãµãŒãã¹ã¯ãservices ãã©ã«ããŒã« ini ãã¡ã€ã«ãäœæããããšã§èšè¿°ãããŸãã æ¬¡ã® XNUMX ã€ã®ãã©ã¡ãŒã¿ãèšå®ããå¿ èŠããããŸãã
- MSMS_SERVICE_NAME: ãµãŒãã¹å - ã¢ã©ãŒããšç£èŠãã°ã§äœ¿çšãããŸãã
- MSMS_SERVICE_ENDPOINT:curl ã§æ¥ç¶ãããµãŒãã¹ã®ãšã³ããã€ã³ãã
- MSMS_CURL_PARAMS: 远å ã®ã«ãŒã« ãªãã·ã§ã³ã以äžã®äŸãåç §ããŠãã ããã
- MSMS_EXPECTED: ãµãŒãã¹ããã®äºæãããå¿çã çããçãå Žåã«äœ¿çšãããŸãã
- MSMS_EXPECTED_FILE: äºæããããµãŒãã¹å¿çãå«ãŸãããã¡ã€ã«åã æå®ãããšãMSMS_EXPECTED ãäžæžããããŸãã
- MSMS_RECIPIENTS: éç¥åä¿¡è ã®ãªã¹ããå«ããã¡ã€ã«ã
google.com ãžã®ãªã¯ãšã¹ãã¯ãªãã€ã¬ã¯ãä»ãã®åºå® HTML ãè¿ããŸãããããäºæ³ããããµãŒããŒå¿çãšããŠäœ¿çšããŸãã
curl google.com > services/google-response.htmlservices/google.ini ãã¡ã€ã«ãäœæããŸãããã
MSMS_SERVICE_NAME='google front page'
# service endpoint
MSMS_SERVICE_ENDPOINT='google.com'
# curl parameters
MSMS_CURL_PARAMS='-s --connect-timeout 3 -m 7'
# expected service response
MSMS_EXPECTED_FILE='google-response.html'
# recipients list file
MSMS_RECIPIENTS='google-recipients.txt' Ð MSMS_CURL_PARAMS 以äžãå«ããcurl ã§å®è¡ã§ãããã¹ãŠã®èšå®ãè¡ãããšãã§ããŸãã
- ã³ã³ãœãŒã«ãšãã°ãä¹±éã«ãªãã®ãé¿ããããã«ãcurl ã¡ãã»ãŒãžãç¡å¹ã«ããŸãã
-s - ãã§ãã¯ãããµãŒãã¹ãšã®æ¥ç¶ã¿ã€ã ã¢ãŠããèšå®ããŸã (ç§åäœ)ã
--connect-timeout 3 - å¿çã¿ã€ã ã¢ãŠããèšå®ããŸãã
-m 7 - SSL ã®èšŒææžæ€èšŒãç¡å¹ã«ããŸã (ããšãã°ãèªå·±çœ²åèšŒææžã䜿çšããŠããå Žå)ã
--insecure - http ãªã¯ãšã¹ãã®ã¿ã€ããæå®ããŸãã
-X POST - èŠåºããæå®ããŸãã
-H "Content-Type: application/json" - ãªã¯ãšã¹ãã®æ¬æãæååãŸãã¯ãã¡ã€ã«ãšããŠæå®ããŸãã ãã¡ã€ã«ã®äŸ:
-d @request.json
éç¥ãç¡å¹ã«ããã¿ã€ã ã¢ãŠãã 3 ç§ã«èšå®ããŸããã æ¥ç¶ããã«ã¯7ç§ããããŸãã ãµãŒãã¹å¿çãåä¿¡ããŸãã
泚ç®: äŸã®ããã«ããã©ã¡ãŒã¿å€ãäžéåŒçšç¬Šã§å²ãã§æå®ããŸãã æ®å¿µãªãããbash ã¯ãã®æå³ã§éåžžã«è匱ã§ãããééã£ãåŒçšç¬Šã䜿çšããå¶çºçãªè¶ã¯ã蚺æãé£ãããšã©ãŒã§å®å®ã®æ»ãæãå¯èœæ§ããããŸãã
ã¢ãã¿ãªã³ã°ãèšçœ®ããŠãããŸãã ãã¹ãŠãæ£åžžã§ããããšã確èªããŠã¿ãŸãããã
sudo chmod +x ./monitoring.sh
torsocks ./monitoring.shã¹ã¯ãªããã«ã¯æ¬¡ã®ãããªã¡ãã»ãŒãžã衚瀺ãããã¯ãã§ãã
2020-01-10 12:14:31
health-check "google front page": OKSTEP 3. ã¹ã±ãžã¥ãŒã«ãèšå®ãã
cron ã§ç£èŠã¹ã±ãžã¥ãŒã«ãèšå®ããŸãããã
sudo crontab -egoogle.com ãæ¯åãã§ãã¯ããè¡ã远å ããŸãããã
*/1 * * * * torsocks <ÐУТЬ Ð ÐÐÐÐÐ Ð ÐÐÐÐÐТÐÐ ÐЯ>/monitoring.sh >> <ÐУТЬ Ð ÐÐÐÐÐ Ð ÐÐÐÐÐТÐÐ ÐЯ>/monitoring.log 2>&1æ¯æ¥åå 11.00 æã«ã¢ã©ãŒãã远å ããç£èŠèªäœã®æ©èœã確èªããŸãã ãããè¡ãã«ã¯ãDAILY ãã©ã¡ãŒã¿ãã¹ã¯ãªããã«æž¡ããŸãã
0 11 * * * torsocks <ÐУТЬ Ð ÐÐÐÐÐ Ð ÐÐÐÐÐТÐÐ ÐЯ>/monitoring.sh DAILY >> <ÐУТЬ Ð ÐÐÐÐÐ Ð ÐÐÐÐÐТÐÐ ÐЯ>/monitoring.log 2>&1
2>&1 - ãšã©ãŒãã¡ã€ã³åºåã¹ããªãŒã ã«ãªãã€ã¬ã¯ãããæšæºçãªææ³ã ãã®çµæãç£èŠãã°ã«ãèšé²ãããŸãã
倿Žãä¿åããæ¬¡ã®ã³ãã³ãã§ååŸããŸãããã
sudo service cron reloadcron ã®èšå®ã«ã€ããŠè©³ããã¯ã以äžãåç §ããŠãã ããã .
ãããã£ãŠãæ¯åç£èŠã¹ã¯ãªãããèµ·åãããcurl çµç±ã§ google.com ã«æ¥ç¶ãããŸãã åä¿¡ããå¿çãäºæãããã®ãšç°ãªãå Žåãã¹ã¯ãªããã¯åä¿¡è ã®ãªã¹ãã«é»å ±éç¥ãéä¿¡ããŸãã ç£æ»ãã°ã¯ãã¡ã€ã«monitoring.logã«ä¿åãããŸãã
å¥ã®ãµãŒãã¹ã远å ããå¿ èŠãããå Žåã¯ããã®ãµãŒãã¹çšã®æ°ãã ini ãã¡ã€ã«ã services ãã©ã«ããŒã«äœæããå¿ èŠã«å¿ããŠåä¿¡è ã®å¥ã®ãªã¹ããäœæããŸãã ãã以å€ã¯ãã¹ãŠèªåçã«åäœããŸãã
ãã§ãã¯äžã®ãµãŒãã¹ãå©çšã§ããªããªã£ãå Žåãã¢ã©ãŒãã XNUMX åããšã«éä¿¡ãããŸãã ãµãŒãã¹ãããã«åŸ©å ã§ããªãå Žåã¯ããããã®ãã¬ã°ã©ã ããããã£ã§éç¥ãäžæçã«ç¡å¹ã«ããããšãã§ããŸãã
次ã«ãè¿œå æ©èœãšã¹ã¯ãªããã®å®è£ ã詳ããèŠãŠã¿ãŸãããã
ã¡ãã»ãŒãžãã¿ãŒã³ãšææ çãªé¢äž
ããããšã®ã³ãã¥ãã±ãŒã·ã§ã³ãããæŽ»çºã«ããããã«ããããã« Manechka ãšããååãä»ããé©åãªã¢ãã¿ãŒç»åã远å ããããã¹ã ã¡ãã»ãŒãžãäœæããããã«ããã® PR ã¹ãã·ã£ãªã¹ããéããŸããã ç§ãã¡ã®çµéšã掻çšããããšãã奜ã¿ã«åãããŠå€æŽããããšãã§ããŸãã
äŸãã°ã

ãŸãã¯æ¬¡ã®ããã«ããŠã:

ãªãã§ããããïŒ
ãããåãšã¢ãã¿ãŒã¯æ¬¡ã®ããã«èšå®ãããŸãã .
ã¡ãã»ãŒãžãã³ãã¬ãŒãã¯ãã©ã«ããŒå
ã«ãããŸã ãã³ãã¬ãŒã:
- ã«ãŒã«å€±æ.txt:curl ããŒã以å€ã®ãšã©ãŒ ã³ãŒããè¿ãããšãã«éä¿¡ãããã¡ãã»ãŒãžã éåžžããµãŒãã¹ã«å°éã§ããªãããšã«ã€ããŠè©±ããŸãã
- ãã€ãªãŒ.txt: ãµãŒãã¹ç£èŠãæ©èœããŠããããšã確èªããæ¯æ¥ã®ã¡ãã»ãŒãžã
- ãµãŒãã¹å€±æ.txt: ãµãŒãã¹ã®å¿çãäºæãããã®ãšç°ãªãå Žåã«éä¿¡ãããã¡ãã»ãŒãžã
äŸãšããŠçµã¿èŸŒã¿ã¡ãã»ãŒãž ãã³ãã¬ãŒãã䜿çšããŠãã«ã¹ã¿ãã€ãº ãªãã·ã§ã³ãèŠãŠã¿ãŸãããã
ãã³ãã¬ãŒãã§ã¯çµµæåã䜿çšããŠããŸãã æ®å¿µãªãããhabr ã§ã¯ãããã¯è¡šç€ºãããŸããã
çµµæåãéžæããã«ã¯ãæ€çŽ¢ã䜿çšãããšäŸ¿å©ã§ã :

é©åãªèšå·ãã³ããŒããŠãã³ãã¬ãŒã ããã¹ãã«è²Œãä»ããã ãã§ã (ããã¯éåžžã® Unicode)ã
- ã«ãŒã«å€±æ.txt:
ÐПÑÑМПк, пПЌПгО ЌМе... Ðе ÐŒÐŸÐ³Ñ ÐŽÐŸÑÑÑÑаÑÑÑÑ ÐŽÐŸ ÑеÑвОÑа "$MSMS_SERVICE_NAME" `CURL EXIT CODE: $EXIT_CODE`æå®ãããµãŒãã¹åã䜿çšããŸãã (倿°
MSMS_SERVICE_NAME) ãšãcurl çµäºã³ãŒããå«ãå éšã¹ã¯ãªãã倿° (EXIT_CODEïŒã ãŸããããŒã¯ã¢ããã䜿çšããŠã¡ãã»ãŒãžããã©ãŒãããããŸãã : ã`ãæåã¯åºå®å¹ ããã¹ããå²ã¿ãŸãã åŒçšç¬Šãšã¢ãã¹ãããã£ã¯ bash èšå·ã§ãããããããã§ãšã¹ã±ãŒãããŸãã 倿°åã®åã«ã¯ã$ãèšå·ãä»ããŸããçµæïŒ

- ãµãŒãã¹å€±æ.txt:
ÐПÑÑМПк, пПЌПгО ЌМе... СеÑÐ²ÐžÑ "$MSMS_SERVICE_NAME" ÐŒÐµÐœÑ ÑаÑÑÑÑПОл ÐМ ÑабПÑÐ°ÐµÑ ÐœÐµÐ¿ÑавОлÑМП, Ð²ÐŸÑ ÑÑП ПМ ЌМе ПÑвеÑаеÑ: `$RESPONSE`çµæïŒ

ããã§ã¯å¥ã®ã¹ã¯ãªãã倿°ã䜿çšããŸããRESPONSEã ããã«ã¯ãµãŒãã¹å¿çãå«ãŸããŸãã - ãã€ãªãŒ.txt:
ÐалÑÑ, пÑОвеÑ! У ÐŒÐµÐœÑ Ð²ÑÑ Ñ ÐŸÑПÑП, cÐ»ÐµÐ¶Ñ Ð·Ð° ÑеÑвОÑПЌ: "$MSMS_SERVICE_NAME" кажЎÑÑ ÐŒÐžÐœÑÑкÑ... Ркак Ñ ÑÐµÐ±Ñ ÐŽÐµÐ»Ð°?çµæïŒ

ã¹ã¯ãªããã®å®è£ ã«ç§»ããŸãããã
ç£èŠã¹ã¯ãªãã
ã¢ãã¿ãªã³ã°.sh åçŽãªèªåæ€åºãå®è¡ããŸãããµãŒãã¹ ãã©ã«ããŒãããã¹ãŠã® ini ãã¡ã€ã«ãååŸããããããã«å¯ŸããŠã¢ã©ãŒãã®ç¢ºèªãšéä¿¡ã®ããžãã¯ãå«ãã¡ã€ã³ ã¹ã¯ãªãããå®è¡ããŸãã
#!/bin/bash
cd $(dirname "$0")/services
for service_ini in $(ls *.ini); do
bash ../msms.sh "$1" "$service_ini"
doneç£èŠã¹ããŒã¿ã¹ã«é¢ããæ¯æ¥ã®ã¡ãã»ãŒãžãçæããã«ã¯ãDAILY ãã©ã¡ãŒã¿ãã¹ã¯ãªããã«æž¡ããŸãã
ã¹ã¯ãªãããéå§ããããšãçŸåšã®ãã©ã«ããŒã services ã«å€æŽãããããšã«æ³šæããŠãã ããã ããã«ãããini ãã¡ã€ã«å ã®ãµãŒãã¹ã«çžå¯Ÿçãªãã¡ã€ã« ãã¹ãæå®ã§ããŸãã
éç¥ã確èªããã³éä¿¡ããããã®ã¹ã¯ãªãã
msms.sh ãµãŒãã¹ããã§ãã¯ããã¢ã©ãŒããéä¿¡ããããã®ã¡ã€ã³ ããžãã¯ãå«ãŸããŠããŸãã
é»å ±ã®æäœ:
# telegram endpoint
TG_API_URL="https://api.telegram.org/bot$(cat ../telegram-api-key.txt)/sendMessage"
#################################################################
# send message to telegram
# parameter: message text
#################################################################
function send_message {
for chat_id in $(cat ../$MSMS_RECIPIENTS); do
curl -s -X POST --connect-timeout 10 $TG_API_URL -d chat_id=$chat_id -d parse_mode="Markdown" -d text="$1"
echo
done
}
ãã¡ã€ã«ã«ä¿åãããç§å¯ããŒã䜿çšããŠé»å ± REST API ã«ã¢ã¯ã»ã¹ããããã® URL ãçæããŸãã
send_message 颿°ã¯ãcurl ã䜿çšããŠãã® REST API ã«ã¡ãã»ãŒãžãéä¿¡ããini ã§æå®ãããã¡ã€ã«ããåä¿¡è
ID ãååŸããŸãã ç§ãã¡ãéä¿¡ããããŒã¿ã§ã¯ãã¡ãã»ãŒãž ããŒã¯ã¢ããã䜿çšããŠããããšã瀺ããŸãã parse_mode="Markdown".
çŸåšã®æ¥æã衚瀺ããŠiniãã¡ã€ã«ãèªã¿èŸŒã¿ãŸãããã
echo $(date '+%Y-%m-%d %H:%M:%S')
# load variables from .ini file:
. $2
éæ³ã®çŽ . $2 XNUMXçªç®ã®ãã©ã¡ãŒã¿ãšããŠå
¥åã«æž¡ãããiniãã¡ã€ã«ãéåžžã®ã¹ã¯ãªãããšããŠå®è¡ãããã®äžã§æå®ãããå€ãç°å¢å€æ°ã«å
¥åããŸãã
ãã©ã¡ãŒã¿ãæå®ãããŠããå ŽåãæåŸ
ãããå¿çããã¡ã€ã«ããããŒãããŸã MSMS_EXPECTED_FILE:
if [ -n "$MSMS_EXPECTED_FILE" ]; then
MSMS_EXPECTED="$(cat "$MSMS_EXPECTED_FILE")"
fi
ãµãŒãã¹ã確èªããå¿ èŠã«å¿ããŠã¢ã©ãŒããéä¿¡ããŸãã
RESPONSE="$(eval curl $MSMS_CURL_PARAMS "$MSMS_SERVICE_ENDPOINT")"
EXIT_CODE=$?
if [[ $EXIT_CODE != 0 ]]; then
echo health-check "$MSMS_SERVICE_NAME" FAILED: CURL EXIT WITH $EXIT_CODE
MESSAGE="$(cat ../templates/curl-fail.txt)"
MESSAGE=$(eval echo $MESSAGE)
send_message "$MESSAGE"
elif [[ "$RESPONSE" != "$MSMS_EXPECTED" ]]; then
echo health-check "$MSMS_SERVICE_NAME" FAILED: "$RESPONSE"
MESSAGE="$(cat ../templates/service-fail.txt)"
MESSAGE=$(eval echo $MESSAGE)
send_message "$MESSAGE"
else
echo health-check "$MSMS_SERVICE_NAME": OK
fi
ãŸã倿°ã«ä»£å
¥ããŸã RESPONSE ãã®ãµãŒãã¹ã«å¯ŸããŠcurlã³ãã³ããå®è¡ããçµæã
åŒ EXIT_CODE=$? æåŸã®ã³ãã³ãã®çµæã倿°ã«å
¥ããŸããã€ãŸãã ã«ãŒã«ã ã¢ã©ãŒããéä¿¡ããå¿
èŠãããå Žåã¯ã察å¿ãããã¡ã€ã«ãããã³ãã¬ãŒããèªã¿åãããæ¬¡ã䜿çšããŠåä¿¡è
ã«éä¿¡ãããŸãã send_message.
æåŸã®ãããã¯ã¯ DAILY ãã©ã¡ãŒã¿ãŒãåŠçããŸãã
if test "$1" = "DAILY"; then
echo health-check "$MSMS_SERVICE_NAME" DAILY
MESSAGE="$(cat ../templates/daily.txt)"
MESSAGE=$(eval echo $MESSAGE)
send_message "$MESSAGE"
fiç£èŠèªäœã®æ©èœã確èªããã¡ãã»ãŒãžãéä¿¡ããŸãã
ãŠãŒã¶ãŒIDã®ãªã¹ããååŸãã
åä¿¡è ã»ããã¢ãã.sh ãã¬ã°ã©ã API ãåŒã³åºããŠããããå®ãŠã®ææ°ã¡ãã»ãŒãžãååŸããŸãã
curl -s https://api.telegram.org/bot$(cat telegram-api-key.txt)/getUpdates
| python recipients-setup.pyããã¯Pythonã®ããžãã¯ã䜿ã£ãŠãªã¹ããçŸãã衚瀺ããŸãã ããã¯å¿ èŠãããŸãããã³ãã³ããåºåãã json ããå¿ èŠãª ID ãååŸããã ãã§ãã
torsocks curl -s https://api.telegram.org/bot$(cat telegram-api-key.txt)/getUpdatesãŸãšã
ãããã£ãŠãæ¢è£œã®ã¹ã¯ãªãããšã¡ãã»ãŒãž ãã³ãã¬ãŒãã䜿çšããŠãç£èŠå¯Ÿè±¡ã®ãµãŒãã¹ãšã¢ã©ãŒãã®ãªã¹ãã®ã¿ãèšå®ã§ããŸãã ãããã®æ°ãããåæ§ããäœæã§ããŸãã ãŸãã¯ãææ¡ãããå 容ã«åºã¥ããŠç¬èªã®æ±ºå®ãäžãããšãã§ããŸãã
ãããªãéçºã®ããã®ãªãã·ã§ã³ã§ã¯ããããèªäœã§ç£èŠãæ§æããã³ç®¡çããããšãææ¡ãããŠããŸãããããã§ã¯ Python ãªãã§ã¯å®è¡ã§ããŸããã 誰ããç§ããå
ã«ãããååŸããããã©ãã«ãã«ãªã¯ãšã¹ããéä¿¡ããã°ãããããããŸã:)
åºæïŒ habr.com



