{"id":482602,"date":"2026-06-06T06:00:42","date_gmt":"2026-06-06T06:00:42","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=482602"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=482602","title":{"rendered":"\u041a\u0430\u043a \u044f \u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442: \u043e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u00a0\u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430 \u0441\u043b\u043e\u0432\u0430\u0445 \u0437\u0432\u0443\u0447\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e. \u00ab\u0421\u0434\u0435\u043b\u0430\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043b\u043e\u0433\u0438 \u0438 \u0448\u043b\u0451\u0442 \u0432 Telegram\u00bb\u00a0 \u043d\u0443 \u0447\u0442\u043e \u0442\u0443\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e? Bash, curl, \u043f\u0430\u0440\u0430 if-\u043e\u0432. \u0427\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u044b, \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u0438\u043f\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0447\u0451\u0442. \u041f\u043e\u0442\u043e\u043c \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043b\u043e\u0433\u0430\u0445<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/p>\n<p>4.\u00a0\u00a0\u00a0 \u0410\u043d\u0430\u043b\u0438\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<p>5.\u00a0\u00a0\u00a0 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043d\u0435\u0441\u0430\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/p>\n<p>\u041f\u044f\u0442\u044c \u043f\u0443\u043d\u043a\u0442\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u043c. \u0412\u043c\u0435\u0441\u0442\u0435 \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u00ab\u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043a \u043d\u0430 \u0432\u0435\u0447\u0435\u0440\u00bb, \u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u0427\u0442\u043e \u0436, \u043f\u043e\u0435\u0445\u0430\u043b\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0444\u0443\u043a\u0446\u0438\u044f\u043c\u0438:<\/p>\n<pre><code class=\"bash\">#!\/bin\/bashTG_BOT_TOKEN=\"\u0432\u0430\u0448_\u0442\u043e\u043a\u0435\u043d\"TG_CHAT_ID=\"\u0432\u0430\u0448_chat_id\"send_telegram() {    local message=\"$1\"    curl -s -X POST \"https:\/\/api.telegram.org\/bot$TG_BOT_TOKEN\/sendMessage\" \\        -d chat_id=\"$TG_CHAT_ID\" \\        -d text=\"$message\"}# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 journald \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0447\u0430\u0441ERROR_COUNT=$(journalctl --since=\"1 hour ago\" -p 3 2&gt;\/dev\/null | grep -c \"error|fail\")if [ \"$ERROR_COUNT\" -gt 0 ]; then    send_telegram \"\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u043e\u0448\u0438\u0431\u043e\u043a: $ERROR_COUNT\"else    send_telegram \"\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e\"fi<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041c\u043e\u043b\u0447\u0430\u043d\u0438\u0435. Telegram \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442. \u0421\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u00a0\u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e-\u0442\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0443\u0448\u043b\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0442\u0443\u0434\u0430 \u043a\u0443\u0434\u0430 \u043d\u0430\u0434\u043e, \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0443\u0434\u0430.<\/p>\n<h3>\u042f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a Telegram API \u0432\u0440\u0443\u0447\u043d\u0443\u044e<\/h3>\n<pre><code class=\"bash\">curl -X POST \"https:\/\/api.telegram.org\/bot$TOKEN\/sendMessage\" \\    -d chat_id=\"$CHAT_ID\" \\    -d text=\"\u0422\u0435\u0441\u0442\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u043a\u043e\u0433\u0434\u0430 \u00a0\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0447\u0442\u043e API \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435. \u0410 \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u0442\u043e\u043a\u0435\u043d\u0435 \u0438 chat_id \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/p>\n<pre><code>which jq# \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c:sudo apt install jq -y<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e<\/p>\n<p>\u041d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0432\u0435\u0441\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u042d\u0442\u043e \u0441\u043a\u0443\u0447\u043d\u043e \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u00a0\u0437\u0430\u0442\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043d\u0435\u0440\u0432\u044b.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u044f \u043f\u043e\u043d\u044f\u043b \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432 \u043f\u043e\u043b\u044f\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438.<\/p>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 \u0431\u044b\u043b\u043e \u0432\u043e\u0442 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"bash\">TG_BOT_TOKEN=\"123456789:ABC-DEF\"    # \u2190 \u0444\u0435\u0439\u043a\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043dTG_CHAT_ID=\"987654321\"              # \u2190 \u0444\u0435\u0439\u043a\u043e\u0432\u044b\u0439 ID<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430\u043c\u0438 \u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e&#8230; \u0437\u0430\u0431\u044b\u043b \u0438\u0445 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c. \u0421\u043a\u0440\u0438\u043f\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0443\u0447\u0430\u043b\u0441\u044f \u0432 Telegram \u0441 \u0447\u0443\u0436\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u043b \u043e\u0442\u043a\u0430\u0437. Curl \u043e\u0448\u0438\u0431\u043a\u0443 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e\u043d \u0447\u0435\u0441\u0442\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b \u0437\u0430\u043f\u0440\u043e\u0441, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0435\u0442 \u043c\u0435\u043d\u044f \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b.<\/p>\n<p>\u0412\u044b\u0432\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u043e\u0438\u0442 \u0432\u0431\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443: \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435, \u0447\u0442\u043e \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0441\u0442\u043e\u044f\u0442 \u0432\u0430\u0448\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u042d\u0442\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u00a0\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0432\u0441\u0435.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u044f \u0432\u044b\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u043e: \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439 \u0432\u0435\u0441\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439 \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c.<\/p>\n<h2>\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f: \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u043c\u0435\u043d\u044e<\/h2>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u043f\u043e\u043f\u0440\u0430\u0432\u043e\u043a \u0438 \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0437\u0432\u0435\u0440\u044c \u00a0\u0441 \u0446\u0432\u0435\u0442\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c, \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043c\u0435\u043d\u044e \u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 Telegram \u043f\u0440\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445.<\/p>\n<pre><code class=\"bash\">#!\/bin\/bash# ===== \u041d\u0410\u0421\u0422\u0420\u041e\u0419\u041a\u0418 (\u0417\u0410\u041c\u0415\u041d\u0418\u0422\u0415 \u041d\u0410 \u0421\u0412\u041e\u0418) =====TG_BOT_TOKEN=\"\u0432\u0430\u0448_\u0442\u043e\u043a\u0435\u043d\"TG_CHAT_ID=\"\u0432\u0430\u0448_chat_id\"# \u0426\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430RED='\\033[0;31m'GREEN='\\033[0;32m'YELLOW='\\033[1;33m'BLUE='\\033[0;34m'NC='\\033[0m'send_to_telegram() {    curl -s -X POST \"https:\/\/api.telegram.org\/bot$TG_BOT_TOKEN\/sendMessage\" \\        -d chat_id=\"$TG_CHAT_ID\" \\        -d text=\"$1\" &gt; \/dev\/null 2&gt;&amp;1}check_journal_errors() {    echo -e \"${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 journald...${NC}\"    ERROR_COUNT=$(journalctl --since=\"1 hour ago\" -p 3 2&gt;\/dev\/null | grep -ci \"error|fail\")    if [ \"$ERROR_COUNT\" -eq 0 ]; then        echo -e \"${GREEN}\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e${NC}\"    else        echo -e \"${RED}\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u043e\u0448\u0438\u0431\u043e\u043a: $ERROR_COUNT${NC}\"        journalctl --since=\"1 hour ago\" -p 3 2&gt;\/dev\/null | \\            grep -i \"error|fail\" | sort | uniq -c | sort -nr | head -5    fi    read -p \"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter...\"}check_disk_space() {    echo -e \"${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0438\u0441\u043a\u0430...${NC}\"    df -h | grep -E \"^\/dev\/|Filesystem\"    USAGE=$(df \/ | awk 'NR==2 {print $5}' | sed 's\/%\/\/')    if [ \"$USAGE\" -gt 85 ]; then        echo -e \"${RED}\u041a\u0420\u0418\u0422\u0418\u0427\u041d\u041e: \u0434\u0438\u0441\u043a \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u0430 $USAGE%${NC}\"        send_to_telegram \"\u041a\u0440\u0438\u0442\u0438\u0447\u043d\u043e: \u0434\u0438\u0441\u043a \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u0430 $USAGE%\"    elif [ \"$USAGE\" -gt 70 ]; then        echo -e \"${YELLOW}\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u0434\u0438\u0441\u043a \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u0430 $USAGE%${NC}\"    else        echo -e \"${GREEN}\u0414\u0438\u0441\u043a \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 ($USAGE%)${NC}\"    fi    read -p \"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter...\"}check_services() {    echo -e \"${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 failed \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432...${NC}\"    FAILED=$(systemctl --failed --no-legend 2&gt;\/dev\/null)    if [ -z \"$FAILED\" ]; then        echo -e \"${GREEN}\u0412\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442${NC}\"    else        echo -e \"${RED}\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b:${NC}\"        echo \"$FAILED\"    fi    read -p \"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter...\"}check_memory() {    echo -e \"${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438...${NC}\"    free -h    PERCENT=$(free | awk 'NR==2 {printf \"%.0f\", $3\/$2 * 100}')    if [ \"$PERCENT\" -gt 90 ]; then        echo -e \"${RED}\u041a\u0420\u0418\u0422\u0418\u0427\u041d\u041e: \u043f\u0430\u043c\u044f\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043d\u0430 $PERCENT%${NC}\"    elif [ \"$PERCENT\" -gt 75 ]; then        echo -e \"${YELLOW}\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u043f\u0430\u043c\u044f\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043d\u0430 $PERCENT%${NC}\"    else        echo -e \"${GREEN}\u041f\u0430\u043c\u044f\u0442\u044c \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 ($PERCENT%)${NC}\"    fi    read -p \"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter...\"}check_auth() {    echo -e \"${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432...${NC}\"    AUTH_LOG=\"\"    [ -f \/var\/log\/auth.log ] &amp;&amp; AUTH_LOG=\"\/var\/log\/auth.log\"    [ -f \/var\/log\/secure ]   &amp;&amp; AUTH_LOG=\"\/var\/log\/secure\"    if [ -n \"$AUTH_LOG\" ]; then        FAIL_COUNT=$(grep \"Failed password\" \"$AUTH_LOG\" 2&gt;\/dev\/null \\            | grep \"$(date '+%b %e')\" | wc -l)        echo \"\u041d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0437\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f: $FAIL_COUNT\"        if [ \"$FAIL_COUNT\" -gt 10 ]; then            send_to_telegram \"$FAIL_COUNT \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432\u0445\u043e\u0434\u0430!\"        fi    else        echo \"\u041b\u043e\u0433 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\"    fi    read -p \"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter...\"}full_check() {    send_to_telegram \"\u041d\u0430\u0447\u0430\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 $(hostname)\"    check_journal_errors    check_disk_space    check_services    check_memory    check_auth    send_to_telegram \"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430\"    echo -e \"${GREEN}\u041f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430${NC}\"    read -p \"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter...\"}show_menu() {    clear    echo -e \"${BLUE}========================================${NC}\"    echo -e \"${BLUE}         \u0421\u0418\u0421\u0422\u0415\u041c\u041d\u042b\u0419 \u041c\u041e\u041d\u0418\u0422\u041e\u0420              ${NC}\"    echo -e \"${BLUE}========================================${NC}\"    echo -e \"${GREEN}\u0425\u043e\u0441\u0442: $(hostname)${NC}\"    echo -e \"${GREEN}\u0412\u0440\u0435\u043c\u044f: $(date '+%Y-%m-%d %H:%M:%S')${NC}\"    echo \"\"    echo \"1. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 journald\"    echo \"2. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0435\"    echo \"3. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c failed \u0441\u0435\u0440\u0432\u0438\u0441\u044b\"    echo \"4. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c\"    echo \"5. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u0445\u043e\u0434\u0430\"    echo \"6. \u041f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\"    echo \"0. \u0412\u044b\u0445\u043e\u0434\"    echo \"\"    echo -n \"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0443\u043d\u043a\u0442: \"}while true; do    show_menu    read choice    case $choice in        1) check_journal_errors ;;        2) check_disk_space ;;        3) check_services ;;        4) check_memory ;;        5) check_auth ;;        6) full_check ;;        0) echo \"\u0414\u043e \u0441\u0432\u0438\u0434\u0430\u043d\u0438\u044f!\"; exit 0 ;;        *) echo \"\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440\"; sleep 1 ;;    esacdone<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h3>\n<pre><code class=\"bash\"># \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b \u0441\u043a\u0440\u0438\u043f\u0442\u0430nano \/usr\/local\/bin\/system_monitor.sh# \u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u0434, \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0442\u043e\u043a\u0435\u043d \u0438 chat_id (\u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e, \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435)# \u0414\u0430\u0451\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435chmod +x \/usr\/local\/bin\/system_monitor.sh# \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\/usr\/local\/bin\/system_monitor.sh<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u0447\u0435\u0440\u0435\u0437 cron<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u0438\u043f\u0442 \u0433\u043e\u043d\u044f\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 cron:<\/p>\n<pre><code>crontab -e# \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441:0 * * * * \/usr\/local\/bin\/system_monitor.sh<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>\u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e: \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 cron \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u2014 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0431\u0435\u0437 \u0446\u0438\u043a\u043b\u0430 show_menu.<\/em><\/p>\n<h2>\u0427\u0442\u043e \u044f \u0432\u044b\u043d\u0435\u0441 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e<\/h2>\n<p>\u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u044d\u0442\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435. \u041d\u043e \u043e\u0434\u043d\u043e \u0434\u0435\u043b\u043e \u0447\u0438\u0442\u0430\u0442\u044c, \u0434\u0440\u0443\u0433\u043e\u0435 \u00a0\u0441\u0430\u043c\u043e\u043c\u0443 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u0431\u043b\u0438 \u0438 \u043f\u043e\u0442\u043e\u043c \u043a\u0438\u0432\u0430\u0442\u044c: \u00ab\u043d\u0443 \u0434\u0430, \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u043b\u0438 \u0436\u0435\u00bb.<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u0435\u0449\u0438 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c\u0438. \u0422\u043e\u043a\u0435\u043d, chat_id, \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b, \u043d\u0430\u043b\u0438\u0447\u0438\u0435 curl \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u044d\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u0431\u0430\u0433\u0438 \u0432 \u043b\u043e\u0433\u0438\u043a\u0435.<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u041e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c. \u0417\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u2014 \u044d\u0442\u043e \u043b\u043e\u0442\u0435\u0440\u0435\u044f. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435.<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u0426\u0432\u0435\u0442\u043d\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 &#8212; \u044d\u0442\u043e \u043d\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u0435, \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e. \u0421 ANSI-\u043a\u043e\u0434\u0430\u043c\u0438 \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e, \u0433\u0434\u0435 \u043a\u0440\u0430\u0441\u043d\u043e\u0435, \u0430 \u0433\u0434\u0435 \u0437\u0435\u043b\u0451\u043d\u043e\u0435.<\/p>\n<p>4.\u00a0\u00a0\u00a0 \u0412\u044b\u043d\u043e\u0441\u0438\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043a\u043e\u0434 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u044f send_to_telegram \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0437\u0434\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0451 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0432 \u0434\u0435\u0441\u044f\u0442\u0438.<\/p>\n<p>5.\u00a0\u00a0\u00a0 \u0422\u0438\u0445\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0430\u043c\u044b\u0435 \u043a\u043e\u0432\u0430\u0440\u043d\u044b\u0435. \u0412\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0435.<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0411\u0435\u0437 \u0442\u044f\u0436\u0451\u043b\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c bash, \u043d\u0430 \u043b\u044e\u0431\u043e\u043c Linux-\u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/p>\n<p>\u041d\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435  \u044d\u0442\u043e \u043d\u0435 \u0441\u043a\u0440\u0438\u043f\u0442. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0442\u043e, \u0447\u0442\u043e \u043f\u0443\u0442\u044c \u043e\u0442 \u00ab\u0434\u0430 \u0442\u0443\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e\u00bb \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043b\u0438\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0418 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u0422\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043b\u044e\u0431\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0433\u0434\u0435 \u0432\u0441\u0451 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041e\u043d\u0438 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0430.<\/em><\/p>\n<p><a href=\"https:\/\/github.com\/ku78\/system-monitor-scripts\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/ku78\/system-monitor-scripts<\/a><\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1044276\/\">https:\/\/habr.com\/ru\/articles\/1044276\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u00a0\u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430 \u0441\u043b\u043e\u0432\u0430\u0445 \u0437\u0432\u0443\u0447\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e. \u00ab\u0421\u0434\u0435\u043b\u0430\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043b\u043e\u0433\u0438 \u0438 \u0448\u043b\u0451\u0442 \u0432 Telegram\u00bb\u00a0 \u043d\u0443 \u0447\u0442\u043e \u0442\u0443\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e? Bash, curl, \u043f\u0430\u0440\u0430 if-\u043e\u0432. \u0427\u0430\u0441 \u0440\u0430\u0431\u043e\u0442\u044b, \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435.\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u0438\u043f\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u043b\u043e\u0433\u0438 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0447\u0451\u0442. \u041f\u043e\u0442\u043e\u043c \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0447\u0443\u0442\u043e\u0447\u043a\u0443 \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c:1.\u00a0\u00a0\u00a0 \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043b\u043e\u0433\u0430\u04452.\u00a0\u00a0\u00a0 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u04353.\u00a0\u00a0\u00a0 \u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u04324.\u00a0\u00a0\u00a0 \u0410\u043d\u0430\u043b\u0438\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u04385.\u00a0\u00a0\u00a0 \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043d\u0435\u0441\u0430\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u044f\u0442\u044c \u043f\u0443\u043d\u043a\u0442\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u043c. \u0412\u043c\u0435\u0441\u0442\u0435 \u043e\u043d\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u00ab\u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043a \u043d\u0430 \u0432\u0435\u0447\u0435\u0440\u00bb, \u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u0427\u0442\u043e \u0436, \u043f\u043e\u0435\u0445\u0430\u043b\u0438.\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0444\u0443\u043a\u0446\u0438\u044f\u043c\u0438:#!\/bin\/bashTG_BOT_TOKEN=&#187;\u0432\u0430\u0448_\u0442\u043e\u043a\u0435\u043d&#187;TG_CHAT_ID=&#187;\u0432\u0430\u0448_chat_id&#187;send_telegram() {    local message=&#187;$1&#8243;    curl -s -X POST &#171;https:\/\/api.telegram.org\/bot$TG_BOT_TOKEN\/sendMessage&#187; \\        -d chat_id=&#187;$TG_CHAT_ID&#187; \\        -d text=&#187;$message&#187;}# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 journald \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0447\u0430\u0441ERROR_COUNT=$(journalctl &#8212;since=&#187;1 hour ago&#187; -p 3 2&gt;\/dev\/null | grep -c &#171;error|fail&#187;)if [ &#171;$ERROR_COUNT&#187; -gt 0 ]; then    send_telegram &#171;\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u043e\u0448\u0438\u0431\u043e\u043a: $ERROR_COUNT&#187;else    send_telegram &#171;\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e&#187;fi\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041c\u043e\u043b\u0447\u0430\u043d\u0438\u0435. Telegram \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442. \u0421\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u00a0\u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e-\u0442\u043e \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0443\u0448\u043b\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0442\u0443\u0434\u0430 \u043a\u0443\u0434\u0430 \u043d\u0430\u0434\u043e, \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0443\u0434\u0430.\u042f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a Telegram API \u0432\u0440\u0443\u0447\u043d\u0443\u044ecurl -X POST &#171;https:\/\/api.telegram.org\/bot$TOKEN\/sendMessage&#187; \\    -d chat_id=&#187;$CHAT_ID&#187; \\    -d text=&#187;\u0422\u0435\u0441\u0442&#187;\u0418 \u043a\u043e\u0433\u0434\u0430 \u00a0\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u0447\u0442\u043e API \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435. \u0410 \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 \u0442\u043e\u043a\u0435\u043d\u0435 \u0438 chat_id \u043e\u0448\u0438\u0431\u043a\u0430.\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439which jq# \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c:sudo apt install jq -y\u0418 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u041d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0432\u0435\u0441\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u0430\u044f \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u042d\u0442\u043e \u0441\u043a\u0443\u0447\u043d\u043e \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u00a0\u0437\u0430\u0442\u043e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043d\u0435\u0440\u0432\u044b.\u0412 \u0438\u0442\u043e\u0433\u0435 \u044f \u043f\u043e\u043d\u044f\u043b \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0432 \u043f\u043e\u043b\u044f\u0445 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438.\u0412 \u0444\u0430\u0439\u043b\u0435 \u0431\u044b\u043b\u043e \u0432\u043e\u0442 \u044d\u0442\u043e:TG_BOT_TOKEN=&#187;123456789:ABC-DEF&#187;    # \u2190 \u0444\u0435\u0439\u043a\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043dTG_CHAT_ID=&#187;987654321&#8243;              # \u2190 \u0444\u0435\u0439\u043a\u043e\u0432\u044b\u0439 ID\u042f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430\u043c\u0438 \u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e&#8230; \u0437\u0430\u0431\u044b\u043b \u0438\u0445 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c. \u0421\u043a\u0440\u0438\u043f\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e \u0441\u0442\u0443\u0447\u0430\u043b\u0441\u044f \u0432 Telegram \u0441 \u0447\u0443\u0436\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u043b \u043e\u0442\u043a\u0430\u0437. Curl \u043e\u0448\u0438\u0431\u043a\u0443 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u043e\u043d \u0447\u0435\u0441\u0442\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b \u0437\u0430\u043f\u0440\u043e\u0441, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0432\u0435\u0442 \u043c\u0435\u043d\u044f \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b.\u0412\u044b\u0432\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u043e\u0438\u0442 \u0432\u0431\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443: \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435, \u0447\u0442\u043e \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0441\u0442\u043e\u044f\u0442 \u0432\u0430\u0448\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u042d\u0442\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u00a0\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0432\u0441\u0435.\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u044f \u0432\u044b\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u043e: \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439 \u0432\u0435\u0441\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439 \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c.\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f: \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u043c\u0435\u043d\u044e\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u043f\u043e\u043f\u0440\u0430\u0432\u043e\u043a \u0438 \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0437\u0432\u0435\u0440\u044c \u00a0\u0441 \u0446\u0432\u0435\u0442\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c, \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043c\u0435\u043d\u044e \u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 Telegram \u043f\u0440\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445.#!\/bin\/bash# ===== \u041d\u0410\u0421\u0422\u0420\u041e\u0419\u041a\u0418 (\u0417\u0410\u041c\u0415\u041d\u0418\u0422\u0415 \u041d\u0410 \u0421\u0412\u041e\u0418) =====TG_BOT_TOKEN=&#187;\u0432\u0430\u0448_\u0442\u043e\u043a\u0435\u043d&#187;TG_CHAT_ID=&#187;\u0432\u0430\u0448_chat_id&#187;# \u0426\u0432\u0435\u0442\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430RED=&#8217;\\033[0;31m&#8217;GREEN=&#8217;\\033[0;32m&#8217;YELLOW=&#8217;\\033[1;33m&#8217;BLUE=&#8217;\\033[0;34m&#8217;NC=&#8217;\\033[0m&#8217;send_to_telegram() {    curl -s -X POST &#171;https:\/\/api.telegram.org\/bot$TG_BOT_TOKEN\/sendMessage&#187; \\        -d chat_id=&#187;$TG_CHAT_ID&#187; \\        -d text=&#187;$1&#8243; &gt; \/dev\/null 2&gt;&amp;1}check_journal_errors() {    echo -e &#171;${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 journald&#8230;${NC}&#187;    ERROR_COUNT=$(journalctl &#8212;since=&#187;1 hour ago&#187; -p 3 2&gt;\/dev\/null | grep -ci &#171;error|fail&#187;)    if [ &#171;$ERROR_COUNT&#187; -eq 0 ]; then        echo -e &#171;${GREEN}\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e${NC}&#187;    else        echo -e &#171;${RED}\u041d\u0430\u0439\u0434\u0435\u043d\u043e \u043e\u0448\u0438\u0431\u043e\u043a: $ERROR_COUNT${NC}&#187;        journalctl &#8212;since=&#187;1 hour ago&#187; -p 3 2&gt;\/dev\/null | \\            grep -i &#171;error|fail&#187; | sort | uniq -c | sort -nr | head -5    fi    read -p &#171;\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter&#8230;&#187;}check_disk_space() {    echo -e &#171;${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u0438\u0441\u043a\u0430&#8230;${NC}&#187;    df -h | grep -E &#171;^\/dev\/|Filesystem&#187;    USAGE=$(df \/ | awk &#8216;NR==2 {print $5}&#8217; | sed &#8216;s\/%\/\/&#8217;)    if [ &#171;$USAGE&#187; -gt 85 ]; then        echo -e &#171;${RED}\u041a\u0420\u0418\u0422\u0418\u0427\u041d\u041e: \u0434\u0438\u0441\u043a \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u0430 $USAGE%${NC}&#187;        send_to_telegram &#171;\u041a\u0440\u0438\u0442\u0438\u0447\u043d\u043e: \u0434\u0438\u0441\u043a \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u0430 $USAGE%&#187;    elif [ &#171;$USAGE&#187; -gt 70 ]; then        echo -e &#171;${YELLOW}\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u0434\u0438\u0441\u043a \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u043d\u0430 $USAGE%${NC}&#187;    else        echo -e &#171;${GREEN}\u0414\u0438\u0441\u043a \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 ($USAGE%)${NC}&#187;    fi    read -p &#171;\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter&#8230;&#187;}check_services() {    echo -e &#171;${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 failed \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432&#8230;${NC}&#187;    FAILED=$(systemctl &#8212;failed &#8212;no-legend 2&gt;\/dev\/null)    if [ -z &#171;$FAILED&#187; ]; then        echo -e &#171;${GREEN}\u0412\u0441\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442${NC}&#187;    else        echo -e &#171;${RED}\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b:${NC}&#187;        echo &#171;$FAILED&#187;    fi    read -p &#171;\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter&#8230;&#187;}check_memory() {    echo -e &#171;${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438&#8230;${NC}&#187;    free -h    PERCENT=$(free | awk &#8216;NR==2 {printf &#171;%.0f&#187;, $3\/$2 * 100}&#8217;)    if [ &#171;$PERCENT&#187; -gt 90 ]; then        echo -e &#171;${RED}\u041a\u0420\u0418\u0422\u0418\u0427\u041d\u041e: \u043f\u0430\u043c\u044f\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043d\u0430 $PERCENT%${NC}&#187;    elif [ &#171;$PERCENT&#187; -gt 75 ]; then        echo -e &#171;${YELLOW}\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u043f\u0430\u043c\u044f\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043d\u0430 $PERCENT%${NC}&#187;    else        echo -e &#171;${GREEN}\u041f\u0430\u043c\u044f\u0442\u044c \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 ($PERCENT%)${NC}&#187;    fi    read -p &#171;\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter&#8230;&#187;}check_auth() {    echo -e &#171;${YELLOW}\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u0432\u0445\u043e\u0434\u043e\u0432&#8230;${NC}&#187;    AUTH_LOG=&#187;&#187;    [ -f \/var\/log\/auth.log ] &amp;&amp; AUTH_LOG=&#187;\/var\/log\/auth.log&#187;    [ -f \/var\/log\/secure ]   &amp;&amp; AUTH_LOG=&#187;\/var\/log\/secure&#187;    if [ -n &#171;$AUTH_LOG&#187; ]; then        FAIL_COUNT=$(grep &#171;Failed password&#187; &#171;$AUTH_LOG&#187; 2&gt;\/dev\/null \\            | grep &#171;$(date &#8216;+%b %e&#8217;)&#187; | wc -l)        echo &#171;\u041d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0437\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f: $FAIL_COUNT&#187;        if [ &#171;$FAIL_COUNT&#187; -gt 10 ]; then            send_to_telegram &#171;$FAIL_COUNT \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432\u0445\u043e\u0434\u0430!&#187;        fi    else        echo &#171;\u041b\u043e\u0433 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d&#187;    fi    read -p &#171;\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter&#8230;&#187;}full_check() {    send_to_telegram &#171;\u041d\u0430\u0447\u0430\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430 $(hostname)&#187;    check_journal_errors    check_disk_space    check_services    check_memory    check_auth    send_to_telegram &#171;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430&#187;    echo -e &#171;${GREEN}\u041f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430${NC}&#187;    read -p &#171;\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter&#8230;&#187;}show_menu() {    clear    echo -e &#171;${BLUE}========================================${NC}&#187;    echo -e &#171;${BLUE}         \u0421\u0418\u0421\u0422\u0415\u041c\u041d\u042b\u0419 \u041c\u041e\u041d\u0418\u0422\u041e\u0420              ${NC}&#187;    echo -e &#171;${BLUE}========================================${NC}&#187;    echo -e &#171;${GREEN}\u0425\u043e\u0441\u0442: $(hostname)${NC}&#187;    echo -e &#171;${GREEN}\u0412\u0440\u0435\u043c\u044f: $(date &#8216;+%Y-%m-%d %H:%M:%S&#8217;)${NC}&#187;    echo &#171;&#187;    echo &#171;1. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 journald&#187;    echo &#171;2. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0435&#187;    echo &#171;3. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c failed \u0441\u0435\u0440\u0432\u0438\u0441\u044b&#187;    echo &#171;4. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c&#187;    echo &#171;5. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0432\u0445\u043e\u0434\u0430&#187;    echo &#171;6. \u041f\u043e\u043b\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430&#187;    echo &#171;0. \u0412\u044b\u0445\u043e\u0434&#187;    echo &#171;&#187;    echo -n &#171;\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0443\u043d\u043a\u0442: &#171;}while true; do    show_menu    read choice    case $choice in        1) check_journal_errors ;;        2) check_disk_space ;;        3) check_services ;;        4) check_memory ;;        5) check_auth ;;        6) full_check ;;        0) echo &#171;\u0414\u043e \u0441\u0432\u0438\u0434\u0430\u043d\u0438\u044f!&#187;; exit 0 ;;        *) echo &#171;\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0432\u044b\u0431\u043e\u0440&#187;; sleep 1 ;;    esacdone\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430# \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0430\u0439\u043b \u0441\u043a\u0440\u0438\u043f\u0442\u0430nano \/usr\/local\/bin\/system_monitor.sh# \u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u0434, \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0442\u043e\u043a\u0435\u043d \u0438 chat_id (\u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e, \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435)# \u0414\u0430\u0451\u043c \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435chmod +x \/usr\/local\/bin\/system_monitor.sh# \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\/usr\/local\/bin\/system_monitor.sh\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a \u0447\u0435\u0440\u0435\u0437 cron\u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u0438\u043f\u0442 \u0433\u043e\u043d\u044f\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 cron:crontab -e# \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0430\u0441:0 * * * * \/usr\/local\/bin\/system_monitor.sh\u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e: \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 cron \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u2014 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0431\u0435\u0437 \u0446\u0438\u043a\u043b\u0430 show_menu.\u0427\u0442\u043e \u044f \u0432\u044b\u043d\u0435\u0441 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e\u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u044d\u0442\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0435. \u041d\u043e \u043e\u0434\u043d\u043e \u0434\u0435\u043b\u043e \u0447\u0438\u0442\u0430\u0442\u044c, \u0434\u0440\u0443\u0433\u043e\u0435 \u00a0\u0441\u0430\u043c\u043e\u043c\u0443 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u0431\u043b\u0438 \u0438 \u043f\u043e\u0442\u043e\u043c \u043a\u0438\u0432\u0430\u0442\u044c: \u00ab\u043d\u0443 \u0434\u0430, \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u043b\u0438 \u0436\u0435\u00bb.1.\u00a0\u00a0\u00a0 \u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0432\u0435\u0449\u0438 \u043b\u043e\u043c\u0430\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c\u0438. \u0422\u043e\u043a\u0435\u043d, chat_id, \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b, \u043d\u0430\u043b\u0438\u0447\u0438\u0435 curl \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u044d\u0442\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u0431\u0430\u0433\u0438 \u0432 \u043b\u043e\u0433\u0438\u043a\u0435.2.\u00a0\u00a0\u00a0 \u041e\u0442\u043b\u0430\u0436\u0438\u0432\u0430\u0439\u0442\u0435 \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c. \u0417\u0430\u043f\u0443\u0441\u043a \u0432\u0441\u0435\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u2014 \u044d\u0442\u043e \u043b\u043e\u0442\u0435\u0440\u0435\u044f. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435.3.\u00a0\u00a0\u00a0 \u0426\u0432\u0435\u0442\u043d\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 &#8212; \u044d\u0442\u043e \u043d\u0435 \u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u0435, \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e. \u0421 ANSI-\u043a\u043e\u0434\u0430\u043c\u0438 \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u043d\u043e, \u0433\u0434\u0435 \u043a\u0440\u0430\u0441\u043d\u043e\u0435, \u0430 \u0433\u0434\u0435 \u0437\u0435\u043b\u0451\u043d\u043e\u0435.4.\u00a0\u00a0\u00a0 \u0412\u044b\u043d\u043e\u0441\u0438\u0442\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043a\u043e\u0434 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u044f send_to_telegram \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0435\u0437\u0434\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0435\u0451 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435, \u0447\u0435\u043c \u0432 \u0434\u0435\u0441\u044f\u0442\u0438.5.\u00a0\u00a0\u00a0 \u0422\u0438\u0445\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0430\u043c\u044b\u0435 \u043a\u043e\u0432\u0430\u0440\u043d\u044b\u0435. \u0412\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0435.\u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0411\u0435\u0437 \u0442\u044f\u0436\u0451\u043b\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c bash, \u043d\u0430 \u043b\u044e\u0431\u043e\u043c Linux-\u0441\u0435\u0440\u0432\u0435\u0440\u0435.\u041d\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435  \u044d\u0442\u043e \u043d\u0435 \u0441\u043a\u0440\u0438\u043f\u0442. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0442\u043e, \u0447\u0442\u043e \u043f\u0443\u0442\u044c \u043e\u0442 \u00ab\u0434\u0430 \u0442\u0443\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e\u00bb \u0434\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043b\u0438\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0418 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u0422\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043b\u044e\u0431\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0433\u0434\u0435 \u0432\u0441\u0451 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430.\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041e\u043d\u0438 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u0438\u0441\u043c\u043e\u0442\u0440\u0430.https:\/\/github.com\/ku78\/system-monitor-scripts\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 https:\/\/habr.com\/ru\/articles\/1044276\/<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-482602","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/482602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=482602"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/482602\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=482602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=482602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=482602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}