
์๋ก์ด ์๋น์ค์ ๋ํ ๋ชจ๋ํฐ๋ง์ ์ ์ํ๊ฒ ๊ตฌํํด์ผ ํ์ง๋ง, ๊ธฐ์ฑ ์ธํ๋ผ๋ ์ ๋ฌธ ์ง์์ด ๋ถ์กฑํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ๊ฐ์ด๋์์๋ bash, cron, curl๊ณผ ๊ฐ์ Ubuntu ๋ด์ฅ ๋๊ตฌ๋ง์ ์ฌ์ฉํ์ฌ 30๋ถ ์์ ๋ชจ๋ ์น ์๋น์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋๊ตฌ๋ฅผ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค. ์๋ฆผ ์ ๋ฌ์๋ Telegram์ ์ฌ์ฉํฉ๋๋ค.
"ํ๋ คํ ์ฅ์"์ ์ฌ์ฉ์์ ๊ฐ์ ์ ์ฐธ์ฌ์ผ ๊ฒ์
๋๋ค. ์ค์ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ
์คํธํ ๊ฒฐ๊ณผ, ํจ๊ณผ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
์๊ฒฉ ์ง๋ฃ ์๋น์ค์ธ Doctor Nearby์์ ์ฌ์ฉ์์ ์คํธ๋ ์ค ์์ค์ ํ์
ํ๊ธฐ ์ํ ์ฑ๋ด์ ๊ฐ๋ฐํ ๋, ๋ชจ๋ํฐ๋ง์ด ํ์ํ์ต๋๋ค. ๋ช ์๊ฐ ๋ง์ ํ๋ฅญํ๊ฒ ์๋ํ ๋ฟ๋ง ์๋๋ผ ๊ธ์ ์ ์ธ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ ๋ฏธ๋ ํ๋ก์ ํธ๊ฐ ํ์ํ์ต๋๋ค.
๋จผ์ , ์คํฌ๋ฆฝํธ๊ฐ ์๋ ์ ์ฅ์๋ฅผ ๊ฐ์ ธ์ค๊ฒ ์ต๋๋ค.
git clone https://github.com/rshekhovtsov/msms.gitmsms ํด๋๋ก ๊ฐ์ ์์ ์ ๊ณ์ํฉ๋๋ค.
ํ ๋ ๊ทธ๋จ์ด ์ฐจ๋จ๋ ๊ฒฝ์ฐ ํ๋ก์๋ฅผ ์ฌ์ฉํ์ธ์. ๊ฐ์ฅ ์ฝ๊ณ ์์ ์ ์ธ ๋ฐฉ๋ฒ์ torsocks์ ๋๋ค.
sudo apt install tor
sudo apt install torsocks์๋ฅผ ๋ค์ด, google.com ํํ์ด์ง ๋ชจ๋ํฐ๋ง์ 3๋จ๊ณ๋ก ์ค์ ํด๋ณด๊ฒ ์ต๋๋ค.
1๋จ๊ณ. ํ ๋ ๊ทธ๋จ์์ ๋ด์ ์์ฑํ๊ณ ์ฌ์ฉ์ ID๋ฅผ ์ป์ต๋๋ค.
- ํ
๋ ๊ทธ๋จ ์ฐ๋ฝ์ฒ ๊ฒ์์ฐฝ์์ ๋ค์์ ๊ฒ์ํฉ๋๋ค. :

- ์์ ๋ฒํผ์ ๋๋ฌ ์คํํ๊ณ , /newbot ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ ํ ์ง๋ฌธ์ ๋ตํฉ๋๋ค. name์ ์ฌ์ฉ์์๊ฒ ํ์๋๋ ๋ด์ ์ด๋ฆ์ด๋ฉฐ, username์ ๊ณ ์ ํด์ผ ํ๋ฉฐ "bot"์ผ๋ก ๋๋์ผ ํฉ๋๋ค.

๋ด์ HTTP API์ ๋ํ ๋น๋ฐ ํ ํฐ์ ๋ฐํํ๋๋ฐ, ์ด ํ ํฐ์ msms ํด๋์ telegram-api-key.txt ํ์ผ์ ๋ณต์ฌํ์ฌ ์ ์ฅํด์ผ ํฉ๋๋ค. - ํ ๋ ๊ทธ๋จ ๊ฒ์์ฐฝ์ ๋ด์ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ ์คํํฉ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก, ๋ชจ๋ํฐ๋ง ์๋ฆผ ์์ ์ ๋ชฉ๋ก์ ์ฐ๋ฆฌ ์์ ์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
sudo chmod +x ./recipients-setup.sh torsocks ./recipients-setup.sh์คํฌ๋ฆฝํธ๋ ๋ด์ ๋ํ ์ต์ ์์ฒญ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค. ํ ๋ ๊ทธ๋จ์์ ID์ ์ด๋ฆ์ ํ ์ค๋ก ์ ๋ ฅํด์ผ ํฉ๋๋ค. ์ด ID๋ฅผ services/google-recipients.txt ํ์ผ์ ์ ์ฅํฉ๋๋ค. ํ์ผ ํ์: ๊ฐ ์ค์ ํ๋์ ID์ ๋๋ค. ์:
123456789 987654321
์๋ก์ด ์์ ์๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด Telegram์์ ๋ด์ ์์ํ๋๋ก ์์ฒญํ๊ณ , receivers-setup.sh๋ฅผ ์คํํ๊ณ ํ์ผ์ ID๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
2๋จ๊ณ. ๋ชจ๋ํฐ๋ง ์ค์
์๋น์ค ์ค๋ช ์ services ํด๋์ ini ํ์ผ์ ์์ฑํ์ฌ ์์ฑํฉ๋๋ค. ๋ค์ ๋ค์ฏ ๊ฐ์ง ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
- MSMS_SERVICE_NAME: ์๋น์ค ์ด๋ฆ - ์๋ฆผ ๋ฐ ๋ชจ๋ํฐ๋ง ๋ก๊ทธ์ ์ฌ์ฉ๋ฉ๋๋ค.
- MSMS_SERVICE_ENDPOINT: curl์ ์ฌ์ฉํ์ฌ ์ ๊ทผํ ์๋น์ค์ ์๋ํฌ์ธํธ์ ๋๋ค.
- MSMS_CURL_PARAMS: ์ถ๊ฐ ์ปฌ ์ต์ ์ ์๋ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
- MSMS_์์: ์๋น์ค์์ ์์๋๋ ์๋ต์ ๋๋ค. ์๋ต์ด ์งง์ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- MSMS_์์_ํ์ผ: ์์ ์๋น์ค ์๋ต์ด ํฌํจ๋ ํ์ผ ์ด๋ฆ์ ๋๋ค. ์ด ๊ฐ์ ์ง์ ํ๋ฉด MSMS_EXPECTED๋ณด๋ค ์ฐ์ ํฉ๋๋ค.
- MSMS ์์ ์: ์๋ฆผ ์์ ์ ๋ชฉ๋ก์ด ํฌํจ๋ ํ์ผ์ ๋๋ค.
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": OK3๋จ๊ณ. ์ผ์ ์ค์
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 reload์๋ฅผ ๋ค์ด, cron ์ค์ ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค. .
๋ฐ๋ผ์ ๋งค๋ถ ๋ชจ๋ํฐ๋ง ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ด curl์ ํตํด google.com์ ์ ์ํฉ๋๋ค. ์์ ๋ ์๋ต์ด ์์๊ณผ ๋ค๋ฅผ ๊ฒฝ์ฐ, ์คํฌ๋ฆฝํธ๋ ํ ๋ ๊ทธ๋จ ์์ ์ ๋ชฉ๋ก์ ์๋ฆผ์ ๋ณด๋ ๋๋ค. ํ์ธ ๋ก๊ทธ๋ monitoring.log ํ์ผ์ ์ ์ฅ๋ฉ๋๋ค.
๋ค๋ฅธ ์๋น์ค๋ฅผ ์ถ๊ฐํด์ผ ํ๋ ๊ฒฝ์ฐ, ์๋น์ค ํด๋์ ํด๋น ์๋น์ค์ ini ํ์ผ์ ์๋ก ๋ง๋ค๊ณ , ํ์ํ ๊ฒฝ์ฐ ์์ ์ ๋ชฉ๋ก์ ๋ณ๋๋ก ์์ฑํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋๋จธ์ง๋ ์๋์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ ๊ฒ ์ค์ธ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋ ๊ฒฝ์ฐ 1๋ถ๋ง๋ค ์๋ฆผ์ด ์ ์ก๋ฉ๋๋ค. ์๋น์ค๋ฅผ ์ ์ํ๊ฒ ๋ณต๊ตฌํ ์ ์๋ ๊ฒฝ์ฐ, ํ ๋ ๊ทธ๋จ ๋ด ์์ฑ์์ ์๋ฆผ์ ์ผ์์ ์ผ๋ก ๋นํ์ฑํํ ์ ์์ต๋๋ค.
์ด์ ์คํฌ๋ฆฝํธ์ ์ถ๊ฐ ๊ธฐ๋ฅ๊ณผ ๊ตฌํ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฉ์์ง ํจํด๊ณผ ๊ฐ์ ์ ์ฐธ์ฌ
๋ด๊ณผ์ ์ํต์ ๋์ฑ ํ๋ฐํ๊ฒ ํ๊ธฐ ์ํด ๋ด์ ์ด๋ฆ์ 'Manechka'๋ก ์ง์ ํ๊ณ , ํด๋น ์๋ฐํ ์ฌ์ง์ ์ถ๊ฐํ์ผ๋ฉฐ, ์ ๋ฌธ ํ๋ณด ๋ด๋น์๋ฅผ ํตํด ๋ฉ์์ง ํ ์คํธ๋ฅผ ์ ์ํ์ต๋๋ค. ์ ํฌ๊ฐ ๊ฐ๋ฐํ ๊ธฐ๋ฅ์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ฑฐ๋ ์ทจํฅ์ ๋ง๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ :

๋๋ ์ด๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค:

์?
๋ด ์ด๋ฆ๊ณผ ์๋ฐํ๋ ๋ค์์ ํตํด ์ค์ ๋ฉ๋๋ค. .
๋ฉ์์ง ํ
ํ๋ฆฟ์ ํด๋์ ์์ต๋๋ค. ํ
ํ๋ฆฟ:
- curl-fail.txt: curl์ด 0์ด ์๋ ์ค๋ฅ ์ฝ๋๋ฅผ ๋ฐํํ ๋ ์ ์ก๋๋ ๋ฉ์์ง์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋น์ค์ ์ฐ๊ฒฐํ ์ ์์์ ๋ํ๋ ๋๋ค.
- ๋งค์ผ.txt: ์๋น์ค ๋ชจ๋ํฐ๋ง์ด ์ ๋๋ก ์๋ํ๊ณ ์์์ ํ์ธํ๋ ์ผ์ผ ๋ฉ์์ง์ ๋๋ค.
- ์๋น์ค ์คํจ.txt: ์๋น์ค ์๋ต์ด ์์๊ณผ ๋ค๋ฅผ ๋ ์ ์ก๋๋ ๋ฉ์์ง์ ๋๋ค.
๊ธฐ๋ณธ ์ ๊ณต ๋ฉ์์ง ํ
ํ๋ฆฟ์ ์๋ก ๋ค์ด ์ฌ์ฉ์ ์ ์ ์ต์
์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ
ํ๋ฆฟ์๋ ์ด๋ชจ์ง๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์์ฝ๊ฒ๋ habr์์๋ ์ด๋ชจ์ง๋ฅผ ํ์ํ์ง ์์ต๋๋ค.
์ด๋ชจ์ง๋ฅผ ์ ํํ๋ ค๋ฉด ๊ฒ์์ ์ด์ฉํ๋ฉด ํธ๋ฆฌํฉ๋๋ค. :

์ ์ ํ ๊ธฐํธ๋ฅผ ํ
ํ๋ฆฟ ํ
์คํธ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค(์ด๊ฒ์ ์ผ๋ฐ์ ์ธ ์ ๋์ฝ๋์
๋๋ค).
- curl-fail.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 ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ 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 ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
์์ ์-์ค์ .sh ๋ด์๊ฒ ์ ๋ฌ๋ ์ต์ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด Telegram API๋ฅผ ํธ์ถํฉ๋๋ค.
curl -s https://api.telegram.org/bot$(cat telegram-api-key.txt)/getUpdates
| python recipients-setup.py์ด ํจ์๋ ํ์ด์ฌ ๋งค์ง์ ์ฌ์ฉํ์ฌ ๋ชฉ๋ก์ ๋ฉ์ง๊ฒ ์ถ๋ ฅํฉ๋๋ค. ๊ผญ ํ์ํ ๊ฒ์ ์๋๋ฉฐ, ๋ช ๋ น์ด ์ถ๋ ฅํ๋ JSON ํ์ผ์์ ์ํ๋ ID๋ฅผ ๊ฐ์ ธ์ค๋ฉด ๋ฉ๋๋ค.
torsocks curl -s https://api.telegram.org/bot$(cat telegram-api-key.txt)/getUpdates๊ฒฐ๋ก
์ด๋ ๊ฒ ํ๋ฉด ๊ธฐ์ฑ ์คํฌ๋ฆฝํธ์ ๋ฉ์์ง ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ํฐ๋งํ ์๋น์ค์ ์๋ฆผ ๋ชฉ๋ก๋ง ์ค์ ํ ์ ์์ต๋๋ค. ๋ด์ ๋ํ ์๋ก์ด "๊ฐ์ฑ"์ ๋ง๋ค ์๋ ์๊ณ , ์ ์๋ ํน์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ง์ ๊ฒฐ์ ์ ๋ด๋ฆด ์๋ ์์ต๋๋ค.
์ถ๊ฐ ๊ฐ๋ฐ ์ต์
์ผ๋ก ๋ด ์์ฒด์์ ๋ชจ๋ํฐ๋ง์ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ข์ง๋ง, ํ์ด์ฌ ์์ด๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋๊ตฐ๊ฐ ์ ๋ณด๋ค ๋จผ์ ๊ฐ๋ฐํ๋ค๋ฉด, ํ ๋ฆฌํ์คํธ๋ฅผ ์ด๋์ ์
๋ก๋ํด์ผ ํ ์ง ์์๊ฒ ์ฃ ? ๐
์ถ์ฒ : habr.com



