{"id":495299,"date":"2026-09-20T06:07:27","date_gmt":"2026-09-20T06:07:27","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=495299"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=495299","title":{"rendered":"\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0423\u043c\u043d\u043e\u0433\u043e \u0414\u043e\u043c\u0430 \u0438 \u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u043c \u0431\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. Android, Termux \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u00ab\u0423\u043c\u043d\u044b\u0439 \u0434\u043e\u043c\u00bb \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c &#8212; \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u00a0\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d: \u0437\u0432\u043e\u043d\u043a\u0438 \u0438 SMS.\u00a0\u00a0 <\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043a\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Majordomo), \u0442\u0430\u043a \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0441\u0442\u0430\u0442\u044c\u0438 &#8212; \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c, \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: SMS -&gt; \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 SMS -&gt; \u0437\u0432\u043e\u043d\u043e\u043a \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c.<\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 <a href=\"https:\/\/habr.com\/ru\/articles\/1079258\/\" rel=\"noopener nofollow\">\u041d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u0434\u043e\u043c \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435. Termux, zigbee\/zigbee2mqtt \u0438 Android<\/a> \u0423 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Termux \u0438 \u0435\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430). \u00a0\u00a0<\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e &#8212; \u043a\u043e\u043c\u0430\u043d\u0434\u0443 ping, \u0434\u0443\u043c\u0430\u044e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0435\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u0435\u0451 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0440\u043e\u0443\u0442\u0435\u0440\u0430: <\/p>\n<pre><code>ping -c 1 -W 1 192.168.1.1 &amp;&gt;\/dev\/null &amp;&amp; echo \"\u0421\u0422\u0410\u0422\u0423\u0421: \u0420\u043e\u0443\u0442\u0435\u0440 \u0432 \u0441\u0435\u0442\u0438! \u041c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.\" || echo \"\u0421\u0422\u0410\u0422\u0423\u0421: \u0420\u043e\u0443\u0442\u0435\u0440 \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422!\"<\/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>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0440\u043e\u0443\u0442\u0435\u0440\u0430, \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e MajorDoMo), \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u043e\u0443\u0442\u0435\u0440, \u043d\u043e \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0438 Internet (\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f IP \u0430\u0434\u0440\u0435\u0441 DNS Google):<\/p>\n<p><code>nano step1_ping.sh<\/code>   <\/p>\n<pre><code>#!\/bin\/bashSERVER_IP=\"192.168.1.123\"ROUTER_IP=\"192.168.1.1\"INTERNET_IP=\"8.8.8.8\"echo \"\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u044c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c $SERVER_IP...\"# -c 1 (\u043e\u0434\u0438\u043d \u043f\u0430\u043a\u0435\u0442), -W 1 (\u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f 1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430)if ping -c 1 -W 1 \"$SERVER_IP\" &amp;&gt;\/dev\/null; then    echo \"\u0421\u0422\u0410\u0422\u0423\u0421: \u0421\u0435\u0440\u0432\u0435\u0440 \u0432 \u0441\u0435\u0442\u0438!\"else    echo \"\u0421\u0422\u0410\u0422\u0423\u0421: \u0421\u0435\u0440\u0432\u0435\u0440 \u0423\u0414 \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422!\"fiecho \"\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u044c \u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u043e\u043c $ROUTER_IP...\"if ping -c 1 -W 1 \"$ROUTER_IP\" &amp;&gt;\/dev\/null; then    echo \"\u0421\u0422\u0410\u0422\u0423\u0421: \u0420\u043e\u0443\u0442\u0435\u0440 \u0432 \u0441\u0435\u0442\u0438!\"else    echo \"\u0421\u0422\u0410\u0422\u0423\u0421: \u0420\u043e\u0443\u0442\u0435\u0440 \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422!\"fiecho \"\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u044c \u0441 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c $INTERNET_IP...\"if ping -c 1 -W 1 \"$INTERNET_IP\" &amp;&gt;\/dev\/null; then    echo \"\u0421\u0422\u0410\u0422\u0423\u0421: \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d!\"else    echo \"\u0421\u0422\u0410\u0422\u0423\u0421: \u041d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443!\"fi<\/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>\u0414\u0430\u043b\u044c\u0448\u0435, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c (Ctrl+O, \u0437\u0430\u0442\u0435\u043c Enter, \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u0430 Ctrl+X) \u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (\u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b &#8212; CTRL+C).<\/p>\n<pre><code>chmod +x step1_ping.sh.\/step1_ping.sh \u00a0<\/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<h2>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0423\u0414<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u044b <code>nc<\/code> (netcat) \u0438 <code>curl<\/code> \u0432 Termux, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b:<\/p>\n<pre><code>pkg install netcat-openbsd curl -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>\u0412 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b, \u043d\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>22 &#8212; SSH,<\/p>\n<\/li>\n<li>\n<p>80 &#8212; HTTP (\u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 ),<\/p>\n<\/li>\n<li>\n<p>1883 &#8212; MQTT-\u0431\u0440\u043e\u043a\u0435\u0440,<\/p>\n<\/li>\n<li>\n<p>8080 &#8212; \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Zigbee2MQTT (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0434\u0432\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430: \u043f\u043e\u0440\u0442 80 (MajorDoMo) \u0438 \u043f\u043e\u0440\u0442 8080 (Zigbee2MQTT). \u041d\u0438\u0436\u0435 &#8212; \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430: \u043f\u0440\u043e\u0441\u0442\u043e\u0439 (\u0447\u0435\u0440\u0435\u0437 nc) \u0438 \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 (\u0447\u0435\u0440\u0435\u0437 curl).<\/p>\n<h4>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1: \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0440\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 nc<\/h4>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/p>\n<p><code>nano step2_ports.sh<\/code><\/p>\n<pre><code>#!\/bin\/bashSERVER_IP=\"192.168.1.123\"# \u041c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: \"\u041f\u041e\u0420\u0422:\u041e\u041f\u0418\u0421\u0410\u041d\u0418\u0415\"SERVICES=(    \"80:MajorDoMo Web\"    \"8080:Zigbee2MQTT Web\")echo \"\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 $SERVER_IP...\"for item in \"${SERVICES[@]}\"; do    # \u0420\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e\u0440\u0442 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0443 \":\"    PORT=\"${item%%:*}\"    NAME=\"${item#*:}\"    # nc -z: \u0440\u0435\u0436\u0438\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, -w 1: \u0442\u0430\u0439\u043c\u0430\u0443\u0442 1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430    if nc -zv -w 1 \"$SERVER_IP\" \"$PORT\" &amp;&gt;\/dev\/null; then        echo \"  [ OK ] $NAME (\u043f\u043e\u0440\u0442 $PORT) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\"    else        echo \"  [FAIL] $NAME (\u043f\u043e\u0440\u0442 $PORT) \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422!\"    fidone<\/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>\n<h4>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2: \u0433\u043b\u0443\u0431\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 HTTP-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 curl<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u00ab\u043e\u0442\u043a\u0440\u044b\u0442 \u043b\u0438 \u043f\u043e\u0440\u0442\u00bb, \u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442, \u043e\u0442\u0434\u0430\u0451\u0442 \u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (HTTP-\u043a\u043e\u0434 200). \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 (\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0442\u043e\u0442 \u0436\u0435 \u0444\u0430\u0439\u043b \u2014 \u043d\u0430 \u0432\u044b\u0431\u043e\u0440):<\/p>\n<pre><code>#!\/bin\/bashSERVER_IP=\"192.168.1.123\"echo \"=== \u0413\u043b\u0443\u0431\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 ===\"# \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 HTTP-\u043a\u043e\u0434\u0430check_http() {    local url=$1    local name=$2    # --silent: \u0441\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441-\u0431\u0430\u0440    # --output \/dev\/null: \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0442\u0435\u043b\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b    # --write-out \"%{http_code}\": \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e HTTP-\u043a\u043e\u0434    # --max-time 3: \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 3 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u043c\u0438    STATUS_CODE=$(curl --silent --output \/dev\/null --write-out \"%{http_code}\" --max-time 3 \"$url\")    if [ \"$STATUS_CODE\" -eq 200 ]; then        echo \"  [ OK ] $name \u043e\u0442\u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (\u041a\u043e\u0434: 200)\"    elif [ \"$STATUS_CODE\" = \"000\" ]; then        # 000 \u2014 curl \u043d\u0435 \u0441\u043c\u043e\u0433 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f (\u0442\u0430\u0439\u043c\u0430\u0443\u0442, \u0445\u043e\u0441\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438 \u0442.\u043f.)        echo \"  [FAIL] $name \u0412\u041e\u041e\u0411\u0429\u0415 \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422 (\u0422\u0430\u0439\u043c\u0430\u0443\u0442 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d)\"    else        echo \"  [WARN] $name \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u043d\u043e \u0432\u0435\u0440\u043d\u0443\u043b \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u041a\u043e\u0434: $STATUS_CODE)\"    fi}# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c MajorDoMo (\u043f\u043e\u0440\u0442 80)check_http \"http:\/\/$SERVER_IP:80\" \"MajorDoMo Web\"# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c Zigbee2MQTT (\u043f\u043e\u0440\u0442 8080)check_http \"http:\/\/$SERVER_IP:8080\" \"Zigbee2MQTT Web\"<\/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>\u0412 \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0441\u0430\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u043e\u0439. \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430.<\/p>\n<h2>\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u044c\u044e (\u0417\u0432\u043e\u043d\u043a\u0438 \u0438 SMS)<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u043d\u0451\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438: \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 SMS \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0437\u0432\u043e\u043d\u043a\u043e\u0432. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0438 \u043a\u0430\u043d\u0430\u043b\u044b \u0441\u0442\u0430\u043d\u0443\u0442 \u043d\u0430\u0448\u0438\u043c\u0438 \u00ab\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c\u0438\u00bb \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0439. \u0427\u0442\u043e\u0431\u044b Termux \u043c\u043e\u0433 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c SMS \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0432\u043e\u043d\u043a\u0438 \u00a0\u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 <strong>Termux:API<\/strong>. \u041e\u043d\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0441\u043e\u043b\u044c Linux \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 Android, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u044f, \u043d\u043e \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430.    <\/p>\n<blockquote>\n<p><strong>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437)<\/strong><\/p>\n<p>\u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u00a0<strong>Termux:API<\/strong> (\u0438\u0437 \u0442\u043e\u0433\u043e \u0436\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043b\u0438 \u0441\u0430\u043c Termux \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, F-Droid). \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<\/blockquote>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c  \u043f\u0430\u043a\u0435\u0442 \u0443\u0442\u0438\u043b\u0438\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 Termux:<\/p>\n<pre><code>pkg install termux-api -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<h4>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 SMS \u0438 \u0437\u0432\u043e\u043d\u043a\u0430    <\/h4>\n<p>\u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0432\u044f\u0437\u0438 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b: termux-sms-send \u0438 termux-telephony-call. <\/p>\n<p>\u0412\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u0434 \u043d\u0438\u0436\u0435. <strong>\u0417\u0430\u043c\u0435\u043d\u044f\u0435\u043c +XXXXXXXXXXX \u043d\u0430 \u0441\u0432\u043e\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430<\/strong>:<\/p>\n<pre><code>#!\/bin\/bash# \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u043c \u0437\u0432\u043e\u043d\u0438\u0442\u044c, \u0432 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435MY_NUMBER=\"+XXXXXXXXXXX\"echo \"=== \u0422\u0435\u0441\u0442 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 ===\"# 1. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 SMSecho \"\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 SMS...\"termux-sms-send -n \"$MY_NUMBER\" \"Termux: \u0422\u0435\u0441\u0442 \u0441\u0432\u044f\u0437\u0438. \u0421\u0435\u0440\u0432\u0435\u0440 \u0423\u043c\u043d\u043e\u0433\u043e \u0414\u043e\u043c\u0430 \u043e\u043a!\"echo \"\u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 SMS \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.\"echo \"-----------------------------------\"# 2. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0432\u043e\u043d\u043a\u0430echo \"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0421\u0435\u0439\u0447\u0430\u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043d\u0430 $MY_NUMBER\"echo \"\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0435\u0433\u043e.\"read -p \"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0432\u043e\u043d\u043a\u0430...\"termux-telephony-call \"$MY_NUMBER\"<\/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<blockquote>\n<p>!!! \u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0432\u043e\u043d\u043a\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 SMS \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f Android \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Termux \u0434\u043b\u044f \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0438 SMS \u2013 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0430\u0435\u043c \u0438\u0445, \u0431\u0435\u0437 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 &#8212; \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.     <\/p>\n<\/blockquote>\n<h2>\u0424\u0438\u043d\u0430\u043b<\/h2>\n<p>\u0421\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0432 \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432 \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e &#8212; \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0438 \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c.<\/p>\n<h4>\u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b<\/h4>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0435 30 \u0441\u0435\u043a\u0443\u043d\u0434 (\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439\u00a0<code>INTERVAL<\/code>). \u041c\u043e\u043d\u0438\u0442\u043e\u0440\u044f\u0442\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u0435 \u0446\u0435\u043b\u0438:<\/p>\n<p>1.\u00a0\u00a0\u00a0 <strong>\u0421\u0435\u0440\u0432\u0435\u0440 \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430<\/strong>\u00a0&#8212; \u043f\u043e \u043f\u0438\u043d\u0433\u0443. \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (MajorDoMo, Zigbee2MQTT) \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u0430 \u0438\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u043f\u0430\u043c\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439.<\/p>\n<p>2.\u00a0\u00a0\u00a0 <strong>\u0420\u043e\u0443\u0442\u0435\u0440<\/strong>\u00a0\u2014 \u043f\u043e \u043f\u0438\u043d\u0433\u0443.<\/p>\n<p>3.\u00a0\u00a0\u00a0 <strong>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430<\/strong>\u00a0\u2014 \u043f\u043e \u043f\u0438\u043d\u0433\u0443 (\u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c DNS Google\u00a0<code>8.8.8.8<\/code>).<\/p>\n<p>4.\u00a0\u00a0\u00a0 <strong>\u0412\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0438\u0441\u044b<\/strong>\u00a0(MajorDoMo \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 80 \u0438 Zigbee2MQTT \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 8080) \u2014 \u0447\u0435\u0440\u0435\u0437 HTTP\u2011\u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043a\u043e\u0434\u0430 \u043e\u0442\u0432\u0435\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e \u043f\u0438\u043d\u0433\u0443.<\/p>\n<h4>\u042d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u044f \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0439<\/h4>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0446\u0435\u043b\u0438 \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0434\u0440\u044f\u0434. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445: 2 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0434\u0440\u044f\u0434 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043e\u043a\u043e\u043b\u043e \u043c\u0438\u043d\u0443\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u043e\u0435 SMS \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435; 4 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0434\u0440\u044f\u0434, \u0435\u0449\u0451 \u0447\u0435\u0440\u0435\u0437 \u043c\u0438\u043d\u0443\u0442\u0443 &#8212; \u0432\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435; \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u0441\u043b\u0435 \u0442\u0440\u0451\u0445 \u043c\u0438\u043d\u0443\u0442 \u0438 6 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u00ab\u043f\u0443\u0441\u0442\u043e\u0439\u00bb \u0437\u0432\u043e\u043d\u043e\u043a. <\/p>\n<p>\u041f\u0440\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f SMS \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u00abOK: \u2026 \u0412\u041e\u0421\u0421\u0422\u0410\u041d\u041e\u0412\u041b\u0415\u041d\u0410\u00bb, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u0430\u0432\u0430\u0440\u0438\u0438, \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u043f\u0430\u043c\u0438\u0442\u044c \u043f\u0440\u0438 \u043a\u0440\u0430\u0442\u043a\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f\u0445 \u0441\u0432\u044f\u0437\u0438.<\/p>\n<pre><code>#!\/bin\/bash# --- \u041d\u0410\u0421\u0422\u0420\u041e\u0419\u041a\u0418 ---SERVER_IP=\"192.168.1.123\"ROUTER_IP=\"192.168.1.1\"WAN_IP=\"8.8.8.8\"MY_NUMBER=\"+XXXXXXXXXXXX\" # \u0412\u0430\u0448 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430INTERVAL=30               # \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u043f\u0440\u043e\u0441\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445# --- \u0421\u0427\u0415\u0422\u0427\u0418\u041a\u0418 \u041e\u0428\u0418\u0411\u041e\u041a (0 - \u0432\u0441\u0451 \u043e\u043a) ---err_server=0err_router=0err_wan=0err_md=0      # \u0414\u043b\u044f MajorDoMoerr_z2m=0     # \u0414\u043b\u044f Zigbee2MQTT# --- \u0421\u0422\u0410\u0422\u0423\u0421\u042b \u0423\u0412\u0415\u0414\u041e\u041c\u041b\u0415\u041d\u0418\u0419 (0-\u043d\u0435\u0442, 1-\u0421\u041c\u04211, 2-\u0421\u041c\u04212, 3-\u0417\u0432\u043e\u043d\u043e\u043a) ---alert_server=0alert_router=0alert_wan=0alert_md=0alert_z2m=0# \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0438\u043d\u0433\u0430 (0 - \u043e\u043a, 1 - \u0443\u043f\u0430\u043b)check_ping() {    ping -c 1 -W 1 \"$1\" &amp;&gt;\/dev\/null    return $?}# \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 HTTP \u0441\u0442\u0430\u0442\u0443\u0441\u0430 (0 - \u043e\u043a (200), 1 - \u0443\u043f\u0430\u043b\/\u043e\u0448\u0438\u0431\u043a\u0430)check_http_status() {    local url=\"$1\"    # \u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430, \u0442\u0430\u0439\u043c\u0430\u0443\u0442 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b    local code=$(curl --silent --output \/dev\/null --write-out \"%{http_code}\" --max-time 2 \"$url\")    if [ \"$code\" -eq 200 ]; then        return 0    else        return 1    fi}# \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u043e\u0433\u0438\u043a\u0438 \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u0438# \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b: $1-\u0438\u043c\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, $2-\u0438\u043c\u044f \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0421\u041c\u0421, $3-\u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a, $4-\u0441\u0442\u0430\u0442\u0443\u0441 \u0430\u043b\u0435\u0440\u0442\u0430process_incident() {    local var_name=\"$1\"    local text_name=\"$2\"    local count=$3    local alert_status=$4        # 2 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0434\u0440\u044f\u0434 = 1 \u043c\u0438\u043d\u0443\u0442\u0430 \u0430\u0432\u0430\u0440\u0438\u0438    if [ $count -eq 2 ] &amp;&amp; [ $alert_status -eq 0 ]; then        termux-sms-send -n \"$MY_NUMBER\" \"ALERT: \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 [$text_name] (\u0443\u0436\u0435 1 \u043c\u0438\u043d\u0443\u0442\u0430)!\"        eval \"alert_${var_name}=1\"        echo \"[\u0421\u041c\u0421] \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f $text_name\"            # 4 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0434\u0440\u044f\u0434 = \u043e\u043a\u043e\u043b\u043e 2 \u043c\u0438\u043d\u0443\u0442 \u0430\u0432\u0430\u0440\u0438\u0438    elif [ $count -eq 4 ] &amp;&amp; [ $alert_status -eq 1 ]; then        termux-sms-send -n \"$MY_NUMBER\" \"ALERT: [$text_name] \u0412\u0421\u0415 \u0415\u0429\u0415 \u041b\u0415\u0416\u0418\u0422 (\u0443\u0436\u0435 2 \u043c\u0438\u043d\u0443\u0442\u044b)!\"        eval \"alert_${var_name}=2\"        echo \"[\u0421\u041c\u0421] \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f $text_name\"            # 6 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0434\u0440\u044f\u0434 = \u043e\u043a\u043e\u043b\u043e 3 \u043c\u0438\u043d\u0443\u0442\u044b \u0430\u0432\u0430\u0440\u0438\u0438    elif [ $count -eq 6 ] &amp;&amp; [ $alert_status -eq 2 ]; then        echo \"[\u0417\u0412\u041e\u041d\u041e\u041a] \u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u044e \u044d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435: $text_name\"        termux-telephony-call \"$MY_NUMBER\"        eval \"alert_${var_name}=3\"    fi}echo \"=== \u0417\u0430\u043f\u0443\u0441\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0423\u0414 (\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b: ${INTERVAL}\u0441) ===\"while true; do    echo \"--- \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 $(date '+%H:%M:%S') ---\"    # 1. \u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0410 \u0421\u0415\u0420\u0412\u0415\u0420\u0410 (\u041f\u0418\u041d\u0413)    if check_ping \"$SERVER_IP\"; then        if [ $err_server -gt 0 ]; then            [ $alert_server -gt 0 ] &amp;&amp; termux-sms-send -n \"$MY_NUMBER\" \"OK: \u0421\u0432\u044f\u0437\u044c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c $SERVER_IP \u0412\u041e\u0421\u0421\u0422\u0410\u041d\u041e\u0412\u041b\u0415\u041d\u0410.\"            echo \"\u2705 \u0421\u0435\u0440\u0432\u0435\u0440 \u0441\u043d\u043e\u0432\u0430 \u0432 \u0441\u0435\u0442\u0438.\"            err_server=0; alert_server=0        fi                # --- \u0421\u0415\u0420\u0412\u0418\u0421\u042b \u041f\u0420\u041e\u0412\u0415\u0420\u042f\u0415\u041c \u0422\u041e\u041b\u042c\u041a\u041e \u0415\u0421\u041b\u0418 \u0421\u0410\u041c \u0421\u0415\u0420\u0412\u0415\u0420 \u041f\u0418\u041d\u0413\u0423\u0415\u0422\u0421\u042f ---                # 1.1 \u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0410 MAJORDOMO (PORT 80)        if check_http_status \"http:\/\/$SERVER_IP:80\"; then            if [ $err_md -gt 0 ]; then                [ $alert_md -gt 0 ] &amp;&amp; termux-sms-send -n \"$MY_NUMBER\" \"OK: \u0421\u0435\u0440\u0432\u0438\u0441 MajorDoMo (\u043f\u043e\u0440\u0442 80) \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443.\"                echo \"\u2705 MajorDoMo Web [OK]\"                err_md=0; alert_md=0            fi        else            ((err_md++))            echo \"\u274c MajorDoMo Web \u0443\u043f\u0430\u043b. \u041e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0434\u0440\u044f\u0434: $err_md\"            process_incident \"md\" \"MajorDoMo Web\" $err_md $alert_md        fi        # 1.2 \u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0410 ZIGBEE2MQTT (PORT 8080)        if check_http_status \"http:\/\/$SERVER_IP:8080\"; then            if [ $err_z2m -gt 0 ]; then                [ $alert_z2m -gt 0 ] &amp;&amp; termux-sms-send -n \"$MY_NUMBER\" \"OK: \u0421\u0435\u0440\u0432\u0438\u0441 Zigbee2MQTT (\u043f\u043e\u0440\u0442 8080) \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0440\u0430\u0431\u043e\u0442\u0443.\"                echo \"\u2705 Zigbee2MQTT Web [OK]\"                err_z2m=0; alert_z2m=0            fi        else            ((err_z2m++))            echo \"\u274c Zigbee2MQTT Web \u0443\u043f\u0430\u043b. \u041e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0434\u0440\u044f\u0434: $err_z2m\"            process_incident \"z2m\" \"Zigbee2MQTT Web\" $err_z2m $alert_z2m        fi    else        ((err_server++))        echo \"\u274c \u0421\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e \u043f\u0438\u043d\u0433\u0443. \u041e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0434\u0440\u044f\u0434: $err_server\"        process_incident \"server\" \"\u0421\u0435\u0440\u0432\u0435\u0440 \u0423\u0414 (Ping)\" $err_server $alert_server                # \u0415\u0441\u043b\u0438 \u0441\u0430\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u043b\u0435\u0436\u0438\u0442, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0447\u0435\u0442\u0447\u0438\u043a\u0438 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432,         # \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043b\u0438\u0448\u043d\u0438\u0439 \u0441\u043f\u0430\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u0430\u0432\u0430\u0440\u0438\u0435\u0439 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.        err_md=0; err_z2m=0    fi    # 2. \u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0410 \u0420\u041e\u0423\u0422\u0415\u0420\u0410    if check_ping \"$ROUTER_IP\"; then        if [ $err_router -gt 0 ]; then            [ $alert_router -gt 0 ] &amp;&amp; termux-sms-send -n \"$MY_NUMBER\" \"OK: \u0421\u0432\u044f\u0437\u044c \u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u043e\u043c $ROUTER_IP \u0412\u041e\u0421\u0421\u0422\u0410\u041d\u041e\u0412\u041b\u0415\u041d\u0410.\"            echo \"\u2705 \u0420\u043e\u0443\u0442\u0435\u0440 \u0441\u043d\u043e\u0432\u0430 \u0432 \u0441\u0435\u0442\u0438.\"            err_router=0; alert_router=0        fi    else        ((err_router++))        echo \"\u274c \u0420\u043e\u0443\u0442\u0435\u0440 \u0443\u043f\u0430\u043b. \u041e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0434\u0440\u044f\u0434: $err_router\"        process_incident \"router\" \"\u0420\u043e\u0443\u0442\u0435\u0440\" $err_router $alert_router    fi    # 3. \u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0410 \u0418\u041d\u0422\u0415\u0420\u041d\u0415\u0422\u0410    if check_ping \"$WAN_IP\"; then        if [ $err_wan -gt 0 ]; then            [ $alert_wan -gt 0 ] &amp;&amp; termux-sms-send -n \"$MY_NUMBER\" \"OK: \u0414\u043e\u0441\u0442\u0443\u043f \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0412\u041e\u0421\u0421\u0422\u0410\u041d\u041e\u0412\u041b\u0415\u041d.\"            echo \"\u2705 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441\u043d\u043e\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d.\"            err_wan=0; alert_wan=0        fi    else        ((err_wan++))        echo \"\u274c \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0443\u043f\u0430\u043b. \u041e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0434\u0440\u044f\u0434: $err_wan\"        process_incident \"wan\" \"\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\" $err_wan $alert_wan    fi    sleep $INTERVALdone<\/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><strong>\u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0448\u0430\u0433\u0438<\/strong><\/p>\n<p>\u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u2014 \u043f\u043e \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 Android \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n<p><strong>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c Termux \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443.<\/strong>\u00a0\u0414\u043b\u044f \u0442\u0435\u0441\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u0440\u0438 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 Xiaomi \u0441 Android 10, 13 (\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u0441\u0451 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c) \u0438 16 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443: \u043d\u0430 13-\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0443\u0434\u0430\u0432\u0430\u043b\u043e\u0441\u044c, \u043e\u0431\u043e\u0448\u0451\u043b \u0447\u0435\u0440\u0435\u0437 MacroDroid.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u044d\u043d\u0435\u0440\u0433\u043e\u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f Termux.<\/strong>\u00a0\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 \u2014 \u0440\u0435\u0436\u0438\u043c \u0431\u0435\u0437      \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u0438\u043d\u0430\u0447\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u00ab\u0443\u0431\u044c\u0451\u0442\u00bb \u0444\u043e\u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u0422\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0438\u0442\u0430\u043d\u0438\u0435 \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u0437\u0430\u0440\u044f\u0434\u0430\/\u0440\u0430\u0437\u0440\u044f\u0434\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430. <\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a Termux.<\/strong>\u00a0\u0421\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437\u00a0.bashrc\u00a0\u0438\u043b\u0438 Termux:Boot.<\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b: \u043d\u043e\u0447\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c, \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435      \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438<\/strong>\u00a0\u2014 \u0432\u0441\u0451 \u043d\u0430 \u0432\u0430\u0448\u0435 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f &#8212; \u043d\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e, \u0430 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0441\u0442\u0430\u0440\u0442 \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/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\/1084174\/\">https:\/\/habr.com\/ru\/articles\/1084174\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u00ab\u0423\u043c\u043d\u044b\u0439 \u0434\u043e\u043c\u00bb \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c &#8212; \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u00a0\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d: \u0437\u0432\u043e\u043d\u043a\u0438 \u0438 SMS.\u00a0\u00a0 \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043a\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 Majordomo), \u0442\u0430\u043a \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0441\u0442\u0430\u0442\u044c\u0438 &#8212; \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c, \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: SMS -&gt; \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 SMS -&gt; \u0437\u0432\u043e\u043d\u043e\u043a \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c.\u0421\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u041d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u043c\u043d\u044b\u0439 \u0434\u043e\u043c \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435. Termux, zigbee\/zigbee2mqtt \u0438 Android \u0423 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Termux \u0438 \u0435\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430). \u00a0\u00a0\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e &#8212; \u043a\u043e\u043c\u0430\u043d\u0434\u0443 ping, \u0434\u0443\u043c\u0430\u044e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0435\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u0438\u043c \u0435\u0451 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0442\u0430\u0442\u0443\u0441\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0440\u043e\u0443\u0442\u0435\u0440\u0430: ping -c 1 -W 1 192.168.1.1 &amp;&gt;\/dev\/null &amp;&amp; echo &#171;\u0421\u0422\u0410\u0422\u0423\u0421: \u0420\u043e\u0443\u0442\u0435\u0440 \u0432 \u0441\u0435\u0442\u0438! \u041c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.&#187; || echo &#171;\u0421\u0422\u0410\u0422\u0423\u0421: \u0420\u043e\u0443\u0442\u0435\u0440 \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422!&#187;\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0440\u043e\u0443\u0442\u0435\u0440\u0430, \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e MajorDoMo), \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u043e\u0443\u0442\u0435\u0440, \u043d\u043e \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0438 Internet (\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f IP \u0430\u0434\u0440\u0435\u0441 DNS Google):nano step1_ping.sh   #!\/bin\/bashSERVER_IP=&#187;192.168.1.123&#8243;ROUTER_IP=&#187;192.168.1.1&#8243;INTERNET_IP=&#187;8.8.8.8&#8243;echo &#171;\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u044c \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c $SERVER_IP&#8230;&#187;# -c 1 (\u043e\u0434\u0438\u043d \u043f\u0430\u043a\u0435\u0442), -W 1 (\u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f 1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430)if ping -c 1 -W 1 &#171;$SERVER_IP&#187; &amp;&gt;\/dev\/null; then    echo &#171;\u0421\u0422\u0410\u0422\u0423\u0421: \u0421\u0435\u0440\u0432\u0435\u0440 \u0432 \u0441\u0435\u0442\u0438!&#187;else    echo &#171;\u0421\u0422\u0410\u0422\u0423\u0421: \u0421\u0435\u0440\u0432\u0435\u0440 \u0423\u0414 \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422!&#187;fiecho &#171;\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u044c \u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u043e\u043c $ROUTER_IP&#8230;&#187;if ping -c 1 -W 1 &#171;$ROUTER_IP&#187; &amp;&gt;\/dev\/null; then    echo &#171;\u0421\u0422\u0410\u0422\u0423\u0421: \u0420\u043e\u0443\u0442\u0435\u0440 \u0432 \u0441\u0435\u0442\u0438!&#187;else    echo &#171;\u0421\u0422\u0410\u0422\u0423\u0421: \u0420\u043e\u0443\u0442\u0435\u0440 \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422!&#187;fiecho &#171;\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0432\u044f\u0437\u044c \u0441 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u043e\u043c $INTERNET_IP&#8230;&#187;if ping -c 1 -W 1 &#171;$INTERNET_IP&#187; &amp;&gt;\/dev\/null; then    echo &#171;\u0421\u0422\u0410\u0422\u0423\u0421: \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d!&#187;else    echo &#171;\u0421\u0422\u0410\u0422\u0423\u0421: \u041d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443!&#187;fi\u0414\u0430\u043b\u044c\u0448\u0435, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c (Ctrl+O, \u0437\u0430\u0442\u0435\u043c Enter, \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u0430 Ctrl+X) \u0438 \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 (\u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b &#8212; CTRL+C).chmod +x step1_ping.sh.\/step1_ping.sh \u00a0\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0440\u0442\u043e\u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0423\u0414\u041f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u044b nc (netcat) \u0438 curl \u0432 Termux, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0449\u0451 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b:pkg install netcat-openbsd curl -y\u0412 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044b \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0440\u0442\u044b, \u043d\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e:22 &#8212; SSH,80 &#8212; HTTP (\u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 ),1883 &#8212; MQTT-\u0431\u0440\u043e\u043a\u0435\u0440,8080 &#8212; \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Zigbee2MQTT (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e).\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0434\u0432\u0430 \u0441\u0435\u0440\u0432\u0438\u0441\u0430: \u043f\u043e\u0440\u0442 80 (MajorDoMo) \u0438 \u043f\u043e\u0440\u0442 8080 (Zigbee2MQTT). \u041d\u0438\u0436\u0435 &#8212; \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430: \u043f\u0440\u043e\u0441\u0442\u043e\u0439 (\u0447\u0435\u0440\u0435\u0437 nc) \u0438 \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 (\u0447\u0435\u0440\u0435\u0437 curl).\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1: \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0440\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 nc\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:nano step2_ports.sh#!\/bin\/bashSERVER_IP=&#187;192.168.1.123&#8243;# \u041c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438: &#171;\u041f\u041e\u0420\u0422:\u041e\u041f\u0418\u0421\u0410\u041d\u0418\u0415&#187;SERVICES=(    &#171;80:MajorDoMo Web&#187;    &#171;8080:Zigbee2MQTT Web&#187;)echo &#171;\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 $SERVER_IP&#8230;&#187;for item in &#171;${SERVICES[@]}&#187;; do    # \u0420\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c \u043f\u043e\u0440\u0442 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0443 &#171;:&#187;    PORT=&#187;${item%%:*}&#187;    NAME=&#187;${item#*:}&#187;    # nc -z: \u0440\u0435\u0436\u0438\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, -w 1: \u0442\u0430\u0439\u043c\u0430\u0443\u0442 1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430    if nc -zv -w 1 &#171;$SERVER_IP&#187; &#171;$PORT&#187; &amp;&gt;\/dev\/null; then        echo &#187;  [ OK ] $NAME (\u043f\u043e\u0440\u0442 $PORT) \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.&#187;    else        echo &#187;  [FAIL] $NAME (\u043f\u043e\u0440\u0442 $PORT) \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422!&#187;    fidone \u0412\u0430\u0440\u0438\u0430\u043d\u0442 2: \u0433\u043b\u0443\u0431\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 HTTP-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 curl\u042d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u00ab\u043e\u0442\u043a\u0440\u044b\u0442 \u043b\u0438 \u043f\u043e\u0440\u0442\u00bb, \u0430 \u0441\u043c\u043e\u0442\u0440\u0438\u0442, \u043e\u0442\u0434\u0430\u0451\u0442 \u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (HTTP-\u043a\u043e\u0434 200). \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 (\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0442\u043e\u0442 \u0436\u0435 \u0444\u0430\u0439\u043b \u2014 \u043d\u0430 \u0432\u044b\u0431\u043e\u0440):#!\/bin\/bashSERVER_IP=&#187;192.168.1.123&#8243;echo &#171;=== \u0413\u043b\u0443\u0431\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 ===&#187;# \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 HTTP-\u043a\u043e\u0434\u0430check_http() {    local url=$1    local name=$2    # &#8212;silent: \u0441\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441-\u0431\u0430\u0440    # &#8212;output \/dev\/null: \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0442\u0435\u043b\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b    # &#8212;write-out &#171;%{http_code}&#187;: \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e HTTP-\u043a\u043e\u0434    # &#8212;max-time 3: \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 3 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u043c\u0438    STATUS_CODE=$(curl &#8212;silent &#8212;output \/dev\/null &#8212;write-out &#171;%{http_code}&#187; &#8212;max-time 3 &#171;$url&#187;)    if [ &#171;$STATUS_CODE&#187; -eq 200 ]; then        echo &#187;  [ OK ] $name \u043e\u0442\u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (\u041a\u043e\u0434: 200)&#187;    elif [ &#171;$STATUS_CODE&#187; = &#171;000&#187; ]; then        # 000 \u2014 curl \u043d\u0435 \u0441\u043c\u043e\u0433 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f (\u0442\u0430\u0439\u043c\u0430\u0443\u0442, \u0445\u043e\u0441\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0438 \u0442.\u043f.)        echo &#187;  [FAIL] $name \u0412\u041e\u041e\u0411\u0429\u0415 \u041d\u0415 \u041e\u0422\u0412\u0415\u0427\u0410\u0415\u0422 (\u0422\u0430\u0439\u043c\u0430\u0443\u0442 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d)&#187;    else        echo &#187;  [WARN] $name \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u043d\u043e \u0432\u0435\u0440\u043d\u0443\u043b \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u041a\u043e\u0434: $STATUS_CODE)&#187;    fi}# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c MajorDoMo (\u043f\u043e\u0440\u0442 80)check_http &#171;http:\/\/$SERVER_IP:80&#187; &#171;MajorDoMo Web&#187;# \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c Zigbee2MQTT (\u043f\u043e\u0440\u0442 8080)check_http &#171;http:\/\/$SERVER_IP:8080&#187; &#171;Zigbee2MQTT Web&#187;\u0412 \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0441\u0430\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u043e\u0439. \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430.\u0412\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u044c\u044e (\u0417\u0432\u043e\u043d\u043a\u0438 \u0438 SMS)\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0447\u043d\u0451\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430 \u0432 \u044d\u0442\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438: \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 SMS \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0437\u0432\u043e\u043d\u043a\u043e\u0432. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0438 \u043a\u0430\u043d\u0430\u043b\u044b \u0441\u0442\u0430\u043d\u0443\u0442 \u043d\u0430\u0448\u0438\u043c\u0438 \u00ab\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c\u0438\u00bb \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0433\u0434\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0435\u0439. \u0427\u0442\u043e\u0431\u044b Termux \u043c\u043e\u0433 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c SMS \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0432\u043e\u043d\u043a\u0438 \u00a0\u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 Termux:API. \u041e\u043d\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0441\u043e\u043b\u044c Linux \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 Android, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u044f, \u043d\u043e \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0430.    \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437)\u0423\u0431\u0435\u0436\u0434\u0430\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u00a0Termux:API (\u0438\u0437 \u0442\u043e\u0433\u043e \u0436\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u043e\u0442\u043a\u0443\u0434\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043b\u0438 \u0441\u0430\u043c Termux \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, F-Droid). \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c  \u043f\u0430\u043a\u0435\u0442 \u0443\u0442\u0438\u043b\u0438\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 Termux:pkg install termux-api -y\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 SMS \u0438 \u0437\u0432\u043e\u043d\u043a\u0430    \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u0432\u044f\u0437\u0438 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b: termux-sms-send \u0438 termux-telephony-call. \u0412\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u043a\u043e\u0434 \u043d\u0438\u0436\u0435. \u0417\u0430\u043c\u0435\u043d\u044f\u0435\u043c +XXXXXXXXXXX \u043d\u0430 \u0441\u0432\u043e\u0439 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430:#!\/bin\/bash# \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u043c \u0437\u0432\u043e\u043d\u0438\u0442\u044c, \u0432 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435MY_NUMBER=&#187;+XXXXXXXXXXX&#187;echo &#171;=== \u0422\u0435\u0441\u0442 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 ===&#187;# 1. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 SMSecho &#171;\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0435 SMS&#8230;&#187;termux-sms-send -n &#171;$MY_NUMBER&#187; &#171;Termux: \u0422\u0435\u0441\u0442 \u0441\u0432\u044f\u0437\u0438. \u0421\u0435\u0440\u0432\u0435\u0440 \u0423\u043c\u043d\u043e\u0433\u043e \u0414\u043e\u043c\u0430 \u043e\u043a!&#187;echo &#171;\u0417\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 SMS \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.&#187;echo &#171;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#171;# 2. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0437\u0432\u043e\u043d\u043a\u0430echo &#171;\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0421\u0435\u0439\u0447\u0430\u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043d\u0430 $MY_NUMBER&#187;echo &#171;\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0440\u0430\u0437\u0443 \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0435\u0433\u043e.&#187;read -p &#171;\u041d\u0430\u0436\u043c\u0438\u0442\u0435 Enter \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0432\u043e\u043d\u043a\u0430&#8230;&#187;termux-telephony-call &#171;$MY_NUMBER&#187;!!! \u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0432\u043e\u043d\u043a\u0435 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 SMS \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f Android \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Termux \u0434\u043b\u044f \u0437\u0432\u043e\u043d\u043a\u043e\u0432 \u0438 SMS \u2013 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0430\u0435\u043c \u0438\u0445, \u0431\u0435\u0437 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 &#8212; \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.     \u0424\u0438\u043d\u0430\u043b\u0421\u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0432 \u0438\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432 \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e &#8212; \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0438 \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c.\u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0435 30 \u0441\u0435\u043a\u0443\u043d\u0434 (\u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439\u00a0INTERVAL). \u041c\u043e\u043d\u0438\u0442\u043e\u0440\u044f\u0442\u0441\u044f \u0447\u0435\u0442\u044b\u0440\u0435 \u0446\u0435\u043b\u0438:1.\u00a0\u00a0\u00a0 \u0421\u0435\u0440\u0432\u0435\u0440 \u0443\u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0430\u00a0&#8212; \u043f\u043e \u043f\u0438\u043d\u0433\u0443. \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (MajorDoMo, Zigbee2MQTT) \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u0430 \u0438\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u043f\u0430\u043c\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439.2.\u00a0\u00a0\u00a0 \u0420\u043e\u0443\u0442\u0435\u0440\u00a0\u2014 \u043f\u043e \u043f\u0438\u043d\u0433\u0443.3.\u00a0\u00a0\u00a0 \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u00a0\u2014 \u043f\u043e \u043f\u0438\u043d\u0433\u0443 (\u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c DNS Google\u00a08.8.8.8).4.\u00a0\u00a0\u00a0 \u0412\u0435\u0431\u2011\u0441\u0435\u0440\u0432\u0438\u0441\u044b\u00a0(MajorDoMo \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 80 \u0438 Zigbee2MQTT \u043d\u0430 \u043f\u043e\u0440\u0442\u0443 8080) \u2014 \u0447\u0435\u0440\u0435\u0437 HTTP\u2011\u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043a\u043e\u0434\u0430 \u043e\u0442\u0432\u0435\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043f\u043e \u043f\u0438\u043d\u0433\u0443.\u042d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u044f \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0439\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0446\u0435\u043b\u0438 \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0434\u0440\u044f\u0434. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445: 2 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0434\u0440\u044f\u0434 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043e\u043a\u043e\u043b\u043e \u043c\u0438\u043d\u0443\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u043e\u0435 SMS \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435; 4 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0434\u0440\u044f\u0434, \u0435\u0449\u0451 \u0447\u0435\u0440\u0435\u0437 \u043c\u0438\u043d\u0443\u0442\u0443 &#8212; \u0432\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435; \u0438 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u0441\u043b\u0435 \u0442\u0440\u0451\u0445 \u043c\u0438\u043d\u0443\u0442 \u0438 6 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u00ab\u043f\u0443\u0441\u0442\u043e\u0439\u00bb \u0437\u0432\u043e\u043d\u043e\u043a. \u041f\u0440\u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f SMS \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u00abOK: \u2026 \u0412\u041e\u0421\u0421\u0422\u0410\u041d\u041e\u0412\u041b\u0415\u041d\u0410\u00bb, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u0430\u0432\u0430\u0440\u0438\u0438, \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u043f\u0430\u043c\u0438\u0442\u044c \u043f\u0440\u0438 \u043a\u0440\u0430\u0442\u043a\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f\u0445 \u0441\u0432\u044f\u0437\u0438.#!\/bin\/bash# &#8212; \u041d\u0410\u0421\u0422\u0420\u041e\u0419\u041a\u0418 &#8212;SERVER_IP=&#187;192.168.1.123&#8243;ROUTER_IP=&#187;192.168.1.1&#8243;WAN_IP=&#187;8.8.8.8&#8243;MY_NUMBER=&#187;+XXXXXXXXXXXX&#187; # \u0412\u0430\u0448 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430INTERVAL=30               # \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043e\u043f\u0440\u043e\u0441\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445# &#8212; \u0421\u0427\u0415\u0422\u0427\u0418\u041a\u0418 \u041e\u0428\u0418\u0411\u041e\u041a (0 &#8212; \u0432\u0441\u0451 \u043e\u043a) &#8212;err_server=0err_router=0err_wan=0err_md=0      # \u0414\u043b\u044f MajorDoMoerr_z2m=0     # \u0414\u043b\u044f Zigbee2MQTT# &#8212; \u0421\u0422\u0410\u0422\u0423\u0421\u042b \u0423\u0412\u0415\u0414\u041e\u041c\u041b\u0415\u041d\u0418\u0419 (0-\u043d\u0435\u0442, 1-\u0421\u041c\u04211, 2-\u0421\u041c\u04212, 3-\u0417\u0432\u043e\u043d\u043e\u043a) &#8212;alert_server=0alert_router=0alert_wan=0alert_md=0alert_z2m=0# \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0438\u043d\u0433\u0430 (0 &#8212; \u043e\u043a, 1 &#8212; \u0443\u043f\u0430\u043b)check_ping() {    ping -c 1 -W 1 &#171;$1&#8243; &amp;&gt;\/dev\/null    return $?}# \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 HTTP \u0441\u0442\u0430\u0442\u0443\u0441\u0430 (0 &#8212; \u043e\u043a (200), 1 &#8212; \u0443\u043f\u0430\u043b\/\u043e\u0448\u0438\u0431\u043a\u0430)check_http_status() {    local url=&#187;$1&#187;    # \u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430, \u0442\u0430\u0439\u043c\u0430\u0443\u0442 2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b    local code=$(curl &#8212;silent &#8212;output \/dev\/null &#8212;write-out &#171;%{http_code}&#187; &#8212;max-time 2 &#171;$url&#187;)    if [ &#171;$code&#187; -eq 200 ]; then        return 0    else        return 1    fi}# \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043b\u043e\u0433\u0438\u043a\u0438 \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u0438# \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b: $1-\u0438\u043c\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, $2-\u0438\u043c\u044f \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0421\u041c\u0421, $3-\u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0447\u0435\u0442\u0447\u0438\u043a, $4-\u0441\u0442\u0430\u0442\u0443\u0441 \u0430\u043b\u0435\u0440\u0442\u0430process_incident() {    local var_name=&#187;$1&#8243;    local text_name=&#187;$2&#8243;    local count=$3    local alert_status=$4        # 2 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0434\u0440\u044f\u0434 = 1 \u043c\u0438\u043d\u0443\u0442\u0430 \u0430\u0432\u0430\u0440\u0438\u0438    if [ $count -eq 2 ] &amp;&amp; [ $alert_status -eq 0 ]; then        termux-sms-send -n &#171;$MY_NUMBER&#187; &#171;ALERT: \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 [$text_name] (\u0443\u0436\u0435 1 \u043c\u0438\u043d\u0443\u0442\u0430)!&#187;        eval &#171;alert_${var_name}=1&#187;        echo &#171;[\u0421\u041c\u0421] \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f $text_name&#187;            # 4 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0434\u0440\u044f\u0434 = \u043e\u043a\u043e\u043b\u043e 2 \u043c\u0438\u043d\u0443\u0442 \u0430\u0432\u0430\u0440\u0438\u0438    elif [ $count -eq 4 ] &amp;&amp; [ $alert_status -eq 1 ]; then        termux-sms-send -n &#171;$MY_NUMBER&#187; &#171;ALERT: [$text_name] \u0412\u0421\u0415 \u0415\u0429\u0415 \u041b\u0415\u0416\u0418\u0422 (\u0443\u0436\u0435 2 \u043c\u0438\u043d\u0443\u0442\u044b)!&#187;        eval &#171;alert_${var_name}=2&#187;        echo &#171;[\u0421\u041c\u0421] \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f $text_name&#187;            # 6 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0434\u0440\u044f\u0434 = \u043e\u043a\u043e\u043b\u043e 3 \u043c\u0438\u043d\u0443\u0442\u044b \u0430\u0432\u0430\u0440\u0438\u0438    elif [ $count -eq 6 ] &amp;&amp; [ $alert_status -eq 2 ]; then        echo &#171;[\u0417\u0412\u041e\u041d\u041e\u041a] \u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u044e \u044d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043f\u043e&#8230;<\/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-495299","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/495299","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=495299"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/495299\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=495299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=495299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=495299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}