ΠΠ½ΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π° Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ/ΡΠΊΡΠΏΠ΅ΡΡΠΈΠ·Ρ ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ Π½Π΅Ρ. Π ΡΡΠΎΠΌ Π³Π°ΠΉΠ΄Π΅ ΠΌΡ Π·Π° ΠΏΠΎΠ»ΡΠ°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π»ΡΠ±ΡΡ
Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ubuntu: bash, cron ΠΈ curl. ΠΠ»Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ telegram.
Β«ΠΠΈΡΠ΅Π½ΠΊΠΎΠΉ Π½Π° ΡΠΎΡΡΠ΅Β» Π±ΡΠ΄Π΅Ρ ΡΠΌΠΎΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π½Π° Π»ΡΠ΄ΡΡ
β ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠΎΠ³Π΄Π° ΠΌΡ Π² ΡΠ΅Π»Π΅ΠΌΠ΅Π΄ΠΈΡΠΈΠ½ΡΠΊΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ ΠΠΎΠΊΡΠΎΡ Π ΡΠ΄ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ°Ρ-Π±ΠΎΡΠ° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ²Π½Ρ ΡΡΡΠ΅ΡΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³. ΠΠ° ΠΏΠ°ΡΡ ΡΠ°ΡΠΎΠ² Π±ΡΠ» ΡΠ΄Π΅Π»Π°Π½ ΠΌΠΈΠ½ΠΈ-ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠ²Π° ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π°, ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ:
git clone https://github.com/rshekhovtsov/msms.git
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΡ msms ΠΈ Π΄Π°Π»Π΅Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π² Π½Π΅ΠΉ.
ΠΡΠ»ΠΈ telegram Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΠΊΡΠΈ. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β torsocks:
sudo apt install tor
sudo apt install torsocks
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π°ΡΡΡΠΎΠΈΠΌ Π² ΡΡΠΈ ΡΠ°Π³Π° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ google.com
Π¨ΠΠ 1. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±ΠΎΡΠ° Π² telegram ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ id ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
- Π ΡΡΡΠΎΠΊΠ΅ ΠΏΠΎΠΈΡΠΊΠ° ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΎΠ² Π² telegram ΠΈΡΠ΅ΠΌ
@botfather : - ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π΅Π³ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Start, Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ /newbot ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅ΠΌ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ. ΠΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π²Π²ΠΈΠ΄Ρ, ΡΡΠΎ name β ΡΡΠΎ ΠΈΠΌΡ Π±ΠΎΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, Π° username β ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ Π½Π° Β«botΒ»:
Π‘ΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ, Π±ΠΎΡ Π²ΡΠ΄Π°ΡΡ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ HTTP API, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΡΠ°ΠΉΠ» telegram-api-key.txt Π² ΠΏΠ°ΠΏΠΊΠ΅ msms. - ΠΠ°Π±ΠΈΡΠ°Π΅ΠΌ Π² ΡΡΡΠΎΠΊΠ΅ ΠΏΠΎΠΈΡΠΊΠ° telegram ΠΈΠΌΡ Π½Π°ΡΠ΅Π³ΠΎ Π±ΠΎΡΠ°, ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π΅Π³ΠΎ.
- Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΡΡΠΈΡ
Π°, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ΅Π±Ρ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°:
sudo chmod +x ./recipients-setup.sh torsocks ./recipients-setup.sh
Π‘ΠΊΡΠΈΠΏΡ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ Π±ΠΎΡΡ, ΡΠ°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠ΄Π½Π° ΡΡΡΠΎΠΊΠ° Ρ Π½Π°ΡΠΈΠΌΠΈ id ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² telegram. ΠΠ΅ΡΡΠΌ ΡΡΠΎΡ id ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ services/google-recipients.txt. Π€ΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π°: ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° β ΠΎΠ΄ΠΈΠ½ id. ΠΡΠΈΠΌΠ΅Ρ:
123456789 987654321
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ Π΅Π³ΠΎ ΡΡΠ°ΡΡΠΎΠ²Π°ΡΡ Π±ΠΎΡΠ° Π² telegram, Π·Π°ΠΏΡΡΡΠΈΡΡ recipients-setup.sh ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ id Π² ΡΠ°ΠΉΠ».
Π¨ΠΠ 2. ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΡΡΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ini-ΡΠ°ΠΉΠ»Π° Π² ΠΏΠ°ΠΏΠΊΠ΅ serviΡes. ΠΡΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΏΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
- MSMS_SERVICE_NAME: Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° β Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡΡ ΠΈ ΠΆΡΡΠ½Π°Π»Π΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°.
- MSMS_SERVICE_ENDPOINT: endpoint ΡΠ΅ΡΠ²ΠΈΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ curl’ΠΎΠΌ.
- MSMS_CURL_PARAMS: Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ curl, ΡΠΌ. ΠΏΡΠΈΠΌΠ΅Ρ Π½ΠΈΠΆΠ΅.
- MSMS_EXPECTED: ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΠΎΡΠ²Π΅Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΡΠ²Π΅Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ.
- MSMS_EXPECTED_FILE: ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ ΠΎΡΠ²Π΅ΡΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ MSMS_EXPECTED.
- MSMS_RECIPIENTS: ΡΠ°ΠΉΠ» ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΏΡΠΎΡ Π½Π° google.com Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ html c ΡΠ΅Π΄ΠΈΡΠ΅ΠΊΡΠΎΠΌ, Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΠΎΡΠ²Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°:
curl google.com > services/google-response.html
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» services/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": OK
Π¨ΠΠ 3. ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠ°ΡΡΡΠΎΠΈΠΌ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π² cron:
sudo crontab -e
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΡΠΎΠΊΡ Π΄Π»Ρ Π΅ΠΆΠ΅ΠΌΠΈΠ½ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ google.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 reload
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ cron ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄ΡΡ ΠΌΠΈΠ½ΡΡΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠΊΡΠΈΠΏΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠ΅Π· curl ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π½Π° google.com. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΎΡΠ²Π΅Ρ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ, ΡΠΊΡΠΈΠΏΡ ΡΠ°Π·ΠΎΡΠ»ΡΡ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Π² telegram. ΠΡΡΠ½Π°Π» ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π²Π΅Π΄ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ monitoring.log
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΠ²ΠΈΡ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ini-ΡΠ°ΠΉΠ» Π΄Π»Ρ Π½Π΅Π³ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ services ΠΈ, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ. ΠΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΡΡΠ°Π» Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½, ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡ Π΅ΠΆΠ΅ΠΌΠΈΠ½ΡΡΠ½ΠΎ. ΠΡΠ»ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π±ΡΡΡΡΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π°Ρ Π±ΠΎΡΠ° Π² telegram.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ².
Π¨Π°Π±Π»ΠΎΠ½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΌΠΎΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½ΠΈΠ΅
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ Π±ΠΎΡΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΆΠΈΠ²ΡΠΌ, ΠΌΡ Π½Π°Π·Π²Π°Π»ΠΈ Π΅Π³ΠΎ ΠΠ°Π½Π΅ΡΠΊΠΎΠΉ, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ-Π°Π²Π°ΡΠ°Ρ ΠΈ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΠΈΠ°ΡΡΠΈΠΊΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π½Π° ΡΠ²ΠΎΠΉ Π²ΠΊΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ:
ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΊ:
ΠΠΎΡΠ΅ΠΌΡ Π±Ρ ΠΈ Π½Π΅Ρ?
ΠΠΌΡ Π±ΠΎΡΠ° ΠΈ Π°Π²Π°ΡΠ°ΡΠΊΠ° Π·Π°Π΄Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π·
Π¨Π°Π±Π»ΠΎΠ½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ templates:
- curl-fail.txt: ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° curl Π²Π΅ΡΠ½ΡΠ» Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ±ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄ΠΎΡΡΡΡΠ°ΡΡΡΡ Π΄ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°.
- daily.txt: Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡΠ΅Π΅, ΡΡΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
- service-fail.txt: ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΡΠ²Π΅Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ.
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
Π ΡΠ°Π±Π»ΠΎΠ½Π°Ρ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΌΠΎΠ΄Π·ΠΈ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, habr ΠΈΡ
Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ.
ΠΠ»Ρ ΠΏΠΎΠ΄Π±ΠΎΡΠ° ΡΠΌΠΎΠ΄Π·ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΡΠΊ Π½Π°
ΠΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΠ΅ ΠΈ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Π² ΡΠ΅ΠΊΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° (ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ unicode).
- curl-fail.txt:
ΠΠΎΡΡΠ½ΠΎΠΊ, ΠΏΠΎΠΌΠΎΠ³ΠΈ ΠΌΠ½Π΅... ΠΠ΅ ΠΌΠΎΠ³Ρ Π΄ΠΎΡΡΡΡΠ°ΡΡΡΡ Π΄ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° "$MSMS_SERVICE_NAME" `CURL EXIT CODE: $EXIT_CODE`
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΌΠΈ ΠΈΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΠ° (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
MSMS_SERVICE_NAME
) ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΊΡΠΈΠΏΡΠ° Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ curl (EXIT_CODE
). Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΡtelegram markdown : ΡΠΈΠΌΠ²ΠΎΠ»Ρ "`" ΠΎΠ±ΡΠ°ΠΌΠ»ΡΡΡ ΡΠ΅ΠΊΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠΈΡΠΈΠ½Ρ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°Π²ΡΡΠΊΠΈ ΠΈ Π°ΠΏΠΎΡΡΡΠΎΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ bash, ΠΌΡ ΡΠΊΡΠ°Π½ΠΈΡΡΠ΅ΠΌ ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ "". ΠΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΡΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌ "$".Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
- service-fail.txt:
ΠΠΎΡΡΠ½ΠΎΠΊ, ΠΏΠΎΠΌΠΎΠ³ΠΈ ΠΌΠ½Π΅... Π‘Π΅ΡΠ²ΠΈΡ "$MSMS_SERVICE_NAME" ΠΌΠ΅Π½Ρ ΡΠ°ΡΡΡΡΠΎΠΈΠ» ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π²ΠΎΡ ΡΡΠΎ ΠΎΠ½ ΠΌΠ½Π΅ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ: `$RESPONSE`
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΊΡΠΈΠΏΡΠ°:RESPONSE
. ΠΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠ²Π΅Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°. - daily.txt:
ΠΠ°Π»ΡΡ, ΠΏΡΠΈΠ²Π΅Ρ! Π£ ΠΌΠ΅Π½Ρ Π²ΡΡ Ρ ΠΎΡΠΎΡΠΎ, cΠ»Π΅ΠΆΡ Π·Π° ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ: "$MSMS_SERVICE_NAME" ΠΊΠ°ΠΆΠ΄ΡΡ ΠΌΠΈΠ½ΡΡΠΊΡ... Π ΠΊΠ°ΠΊ Ρ ΡΠ΅Π±Ρ Π΄Π΅Π»Π°?
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ².
Π‘ΠΊΡΠΈΠΏΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°
monitoring.sh Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ auto-discovery β Π±Π΅ΡΠ΅Ρ Π²ΡΠ΅ ini-ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ services ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΊΡΠΈΠΏΡ Ρ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ ΡΠ°ΡΡΡΠ»ΠΊΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ:
#!/bin/bash
cd $(dirname "$0")/services
for service_ini in $(ls *.ini); do
bash ../msms.sh "$1" "$service_ini"
done
ΠΠ»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅ΠΆΠ΅ΡΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΡΡΠ°ΡΡΡΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠΊΡΠΈΠΏΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ DAILY.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ΠΊΡΡΠ°Ρ ΠΏΠ°ΠΏΠΊΠ° ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° services. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² ini-ΡΠ°ΠΉΠ»Π°Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ services.
Π‘ΠΊΡΠΈΠΏΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ ΡΠ°ΡΡΡΠ»ΠΊΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ
msms.sh ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ ΡΠ°ΡΡΡΠ»ΠΊΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ.
Π Π°Π±ΠΎΡΠ° Ρ telegram:
# 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
}
ΠΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ URL Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ REST API telegram, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠΉ Π² ΡΠ°ΠΉΠ»Π΅ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ.
Π€ΡΠ½ΠΊΡΠΈΡ send_message ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ curl Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π° ΡΡΠΎΡ REST API, Π·Π°Π±ΠΈΡΠ°Ρ id ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»Π°, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ Π² ini. Π ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΊΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ: parse_mode="Markdown"
.
ΠΡΠ²Π΅Π΄Π΅ΠΌ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π΄Π°ΡΡ-Π²ΡΠ΅ΠΌΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΠΌ ini-ΡΠ°ΠΉΠ».
echo $(date '+%Y-%m-%d %H:%M:%S')
# load variables from .ini file:
. $2
ΠΠ°Π³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠΎΠΊΠ° . $2
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π½Π° Π²Ρ
ΠΎΠ΄ Π²ΡΠΎΡΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ 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=$?
ΠΊΠ»Π°Π΄Π΅Ρ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Ρ.Π΅. curl. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ, ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΈΠ· ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ 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 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
recipients-setup.sh ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ API telegram Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΡ Π±ΠΎΡΡ:
curl -s https://api.telegram.org/bot$(cat telegram-api-key.txt)/getUpdates
| python recipients-setup.py
ΠΠ΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°Π³ΠΈΡ python Π΄Π»Ρ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ°. ΠΡΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ Π½ΡΠΆΠ½ΡΠΉ id ΠΈΠ· json, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²Π΅Π΄Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°:
torsocks curl -s https://api.telegram.org/bot$(cat telegram-api-key.txt)/getUpdates
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Ρ Π»ΠΈΡΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ ΡΠΏΠΈΡΠΊΠΈ Π΄Π»Ρ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ; ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Β«Π»ΠΈΡΠ½ΠΎΡΡΡΒ» Π΄Π»Ρ Π±ΠΎΡΠ°; Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ Π½Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ Π² ΡΠ°ΠΌΠΎΠΌ Π±ΠΎΡΠ΅, Π½ΠΎ ΡΡΡ Π±Π΅Π· python ΡΠΆΠ΅ Π½Π΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ. ΠΡΠ»ΠΈ Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π΄ΠΎΠΉΠ΄ΡΡ ΡΡΠΊΠΈ ΡΠ°Π½ΡΡΠ΅ ΠΌΠ΅Π½Ρ β Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΡΠ΄Π° Π·Π°Π»ΠΈΠ²Π°ΡΡ pull request π
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com