{"id":314234,"date":"2020-12-03T15:00:43","date_gmt":"2020-12-03T15:00:43","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=314234"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=314234","title":{"rendered":"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437, \u043a\u0430\u043a \u043c\u044b \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u043b\u0438 \u0441\u0435\u0442\u044c Wi-Fi \u0434\u043e 14 000 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0432\u043e\u0434\u043d\u044b\u0445, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043a\u0440\u0443\u043f\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u043d\u0430 \u0431\u0430\u0437\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f Cisco, \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 10 \u043b\u0435\u0442 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0438\u0437:<\/p>\n<ul>\n<li>\n<p>1 348 \u0437\u0434\u0430\u043d\u0438\u0439 \u0438 \u0441\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>10 030 \u0440\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u044c\u044f AIR-LAP1131G, AIR-LAP1041N (\u043e\u043a\u043e\u043b\u043e 88% \u043e\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u0447\u0438\u0441\u043b\u0430), \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u043c\u0438 CAP1602I, CAP2602I, CAP1702I, AP1832I;<\/p>\n<\/li>\n<li>\n<p>WISM1, WISM2, WLC 8540.<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 10 \u043b\u0435\u0442 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441\u0442\u0430\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u043a\u0430\u043f\u0440\u0435\u043c\u043e\u043d\u0442\u043e\u0432. \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0438\u043d\u0436\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u043b\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 \u0441\u0442\u0440\u043e\u044f, \u0447\u0442\u043e \u0432 \u043a\u0443\u043f\u0435 \u0441 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0435\u0439 \u0440\u043e\u0441\u0442\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c \u0436\u0430\u043b\u043e\u0431\u0430\u043c \u043d\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<p>\u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0441\u0440\u043e\u043a\u043e\u0432 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0431\u044e\u0434\u0436\u0435\u0442\u0430 \u0440\u0435\u0448\u0435\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044b \u0441\u0435\u0442\u0438 \u0432 589 \u0437\u0434\u0430\u043d\u0438\u044f\u0445, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0430\u0446\u0438\u0438.&nbsp;<\/p>\n<p>\u0421\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u0430 \u0432\u044b\u0448\u0435\u0434\u0448\u0438\u0445 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f \u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u043e\u0432\u044b\u043c\u0438 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0434\u0430\u043d\u0438\u0439 \u0438 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0438\u043d\u0436\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043d\u0430 PoE \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0441\u0432\u044f\u0437\u0438 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043e\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0441\u0440\u043e\u043a\u043e\u0432 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c &#8212; \u044d\u0442\u043e \u0437\u0430\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e &#8212; \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0434\u0438\u043e\u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/www.ekahau.com\/\" rel=\"noopener noreferrer nofollow\"><u>Ekahau<\/u><\/a>. \u041e\u0431\u044a\u0435\u0445\u0430\u0442\u044c \u0432\u0441\u0435 589 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u043e, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0433\u043e\u0440\u043e\u0434\u0441\u043a\u0438\u0435, \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u0430\u0445 \u0438 \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0435\u043b\u0430\u0445, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u0442\u0440\u0430\u043f\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. <\/p>\n<p>C\u043a\u0430\u0437\u0430\u043d\u043e &#8212; \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438&nbsp; \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0432\u044b\u0435\u0437\u0434\u043d\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0438 \u0432 \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u0435 \u0441\u0440\u043e\u043a\u0438 \u043e\u0431\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043e 89 \u0437\u0434\u0430\u043d\u0438\u0439 \u0438 \u0441\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0432 <a href=\"https:\/\/www.qlik.com\/\" rel=\"noopener noreferrer nofollow\"><u>Qlik<\/u><\/a> \u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044b \u0432\u0441\u0435\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0443. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u0431\u0449\u0430\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0439, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0438 \u043d\u0430 589 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f 8014 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 (\u0437\u0430\u0431\u0435\u0433\u0430\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u043f\u0435\u0440\u0435\u0434, \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0439 \u044d\u043a\u0441\u0442\u0440\u0430\u043f\u043e\u043b\u044f\u0446\u0438\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b\u0430 1% :).<\/p>\n<h3>\u041a\u0430\u043a\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c?<\/h3>\n<p>\u0418 \u0442\u0430\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043b\u0438, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043a\u0443\u043f\u0430\u0442\u044c. \u0418\u043c\u0435\u044f \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u043c\u044b \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0435\u0442\u0435\u0439 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u0432\u044f\u0437\u043a\u0438 Mikrotik cAP AC + CRS328-24P-4S+RM \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 PoE \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 CapsMan. \u041f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c 589 CapsMan \u043d\u0430\u0441 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043c\u0443\u0449\u0430\u043b\u0430, \u0431\u043b\u0430\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u044b\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u201c\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043b\u043a\u0438 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u201d, Ansible \u043d\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u043d\u0435 \u043f\u043e\u043d\u0430\u0441\u043b\u044b\u0448\u043a\u0435.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430\u0448 \u0441\u0442\u0430\u0440\u044b\u0439 \u0438 \u0434\u043e\u0431\u0440\u044b\u0439 \u043f\u0430\u0440\u0442\u043d\u0435\u0440, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Cisco, \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0441\u043c\u043e\u0433 \u0431\u044b \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c \u0434\u043e\u043d \u041a\u043e\u0440\u043b\u0435\u043e\u043d\u0435 :), \u0441\u0442\u043e\u0438\u0442\u044c \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043d\u0435 \u0446\u0435\u043d\u0430.<\/p>\n<p>\u0418\u0442\u0430\u043a \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0443 Cisco \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u0435\u0434\u0443\u0442 \u0438\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u2026<\/p>\n<h3>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443<\/h3>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0434\u0435\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 AIR-AP1815I-R, \u044d\u0442\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442 \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u043a\u0443 \u0438 \u043f\u0443\u0441\u043a\u043e\u043d\u0430\u043b\u0430\u0434\u043a\u0443 \u043d\u0430\u0448\u0438\u043c \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u0430\u043c. \u0414\u0435\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0430 \u0438\u0445 \u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043c\u0430\u043b\u043e 4175 \u0448\u0442\u0443\u043a, \u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0417\u0418\u041f, \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0440\u0430\u0434\u0438\u043e\u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0442\u043e\u043c \u0436\u0435 <a href=\"https:\/\/www.ekahau.com\/\" rel=\"noopener noreferrer nofollow\"><u>Ekahau<\/u><\/a> \u0438\u043d\u0430\u0447\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f&nbsp; \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041a \u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e (\u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0435\u043c\u0443 \u0437\u0430 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u043e, \u0447\u0442\u043e \u043c\u043e\u043d\u0442\u0430\u0436\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u0440\u044f\u0434\u0447\u0438\u043a, \u0432\u043e\u0442 \u0435\u0433\u043e \u0442\u043e \u0438 \u0440\u0435\u0448\u0435\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u044c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0442\u044f\u0436\u0435\u043b\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u043f\u043e\u0434\u0440\u044f\u0434\u0447\u0438\u043a\u043e\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/nextcloud.com\/\" rel=\"noopener noreferrer nofollow\"><u>Nextcloud<\/u><\/a>, \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0437\u0430 \u0445\u043e\u0434\u043e\u043c \u0440\u0430\u0431\u043e\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d <a href=\"https:\/\/www.google.ru\/intl\/ru\/sheets\/about\/\" rel=\"noopener noreferrer nofollow\"><u>Google Sheets<\/u><\/a>, \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0435\u0445\u0430\u043b\u0438\u2026. \ud83d\ude42<\/p>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043a\u0430\u0436\u0443\u0449\u0443\u044e\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0439. \u041f\u043e\u0434\u0440\u044f\u0434\u0447\u0438\u043a \u0432\u044b\u0435\u0437\u0436\u0430\u0435\u0442 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u0443\u0435\u0442 \u043f\u043b\u0430\u043d\u044b \u0411\u0422\u0418 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0438, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0432 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b37\/599\/a2a\/b37599a2ad3b03ada2be18b2129e2e18\" width=\"1104\" height=\"620\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0441\u0445\u0435\u043c\u0443 \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0442\u0430\u043a\u0436\u0435 \u043a\u043b\u0430\u0434\u0435\u043c \u0432 \u043e\u0431\u043b\u0430\u043a\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f28\/b12\/9a6\/f28b129a6d417767d2656be5e3e48bf5\" width=\"1066\" height=\"620\"><figcaption><\/figcaption><\/figure>\n<p>\u041c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0438 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u044f\u0436\u043a\u043e\u0439 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439.<\/p>\n<p>\u041d\u043e \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0437\u0430 \u044d\u0442\u0438\u043c \u043c\u044b \u0438 \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043c\u044b \u043d\u0435 \u043d\u0430\u0448\u043b\u0438 \u0438 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443 \u043f\u043e\u043c\u043e\u0436\u0435\u0442.<\/p>\n<h3>\u0418 \u0442\u0430\u043a \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u2026<\/h3>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u0433\u043e OpenSource:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/graphiteapp.org\/\" rel=\"noopener noreferrer nofollow\">Graphite<\/a> + <a href=\"https:\/\/grafana.com\/\" rel=\"noopener noreferrer nofollow\">Graphana<\/a> \u2014 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.sqlite.org\/index.html\" rel=\"noopener noreferrer nofollow\">SQLite<\/a> \u2014 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.python.org\/\" rel=\"noopener noreferrer nofollow\">Python<\/a> \u0438 BASH \u2014  \u0441\u043a\u0440\u0438\u043f\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>Telegram bot \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043c\u044b \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 <a href=\"https:\/\/www.google.ru\/intl\/ru\/sheets\/about\/\" rel=\"noopener noreferrer nofollow\"><u>Google Sheets<\/u><\/a> \u0432\u043e\u0442 \u0435\u0435 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0432\u0438\u0434:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/af0\/984\/afb\/af0984afb2d9fef415d2856e1abeba1d\" width=\"1065\" height=\"470\"><figcaption><\/figcaption><\/figure>\n<p><em>\u0412\u0441\u0435 \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0430 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0432\u044b\u043c\u044b\u0448\u043b\u0435\u043d\u044b \u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \ud83d\ude42&nbsp;<\/em><\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e bash \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0434\u043b\u044f \u043e\u043f\u0440\u043e\u0441\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 WLC \u043f\u043e SNMP:<\/p>\n<pre><code class=\"bash\">#!\/bin\/bash  #snmp OID \u0434\u043b\u044f Duplex, \u0434\u043b\u044f id \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u0440\u043e\u0432\u043e\u0434\u0443: oid_speed=\".1.3.6.1.4.1.9.9.513.1.2.2.1.11\"  #snmp OID \u0434\u043b\u044f Ap_Name, \u0434\u043b\u044f id \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Ap_Name: oid_name=\"SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5\"  #snmp OID \u0434\u043b\u044f Ap_Ip_Address, \u0434\u043b\u044f id \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Ap ip Address: oid_address=\".1.3.6.1.4.1.14179.2.2.1.1.19\" #snmp OID \u0434\u043b\u044f Ap_mac_address, \u0434\u043b\u044f id \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Ap mac Address:  oid_mac=\".1.3.6.1.4.1.9.9.513.1.1.1.1.2\"  #\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c snmp v2 community community=\"snmp_comunity\"  #\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c ip \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 address1=\"10.x.y.z\"  address2=\"10.x1.y1.z1\"  snmpwalk -v 2c -c  $comunity $address1  $oid_name | awk '{print $1 $4}' | sed 's\/SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5.\/'$address1'wlc\/' | sed 's\/\"\/ \/' | sed 's\/\"\/\/' &gt; \/opt\/rename\/snmp_files\/ap_name_index.txt &amp;  snmpwalk -v 2c -c  $comunity $address1  $oid_speed | awk '{print substr($1, 1, length($1)-2) \" \" $4}' | sed 's\/SNMPv2-SMI::enterprises.9.9.513.1.2.2.1.11.\/'$address1'wlc\/' | uniq  &gt; \/opt\/rename\/snmp_files\/ap_speed_index.txt &amp;  snmpwalk -v 2c -c  $comunity $address1  $oid_address | awk '{print $1 \" \" $4}' | sed 's\/SNMPv2-SMI::enterprises.14179.2.2.1.1.19.\/'$address1'wlc\/'  &gt; \/opt\/rename\/snmp_files\/ap_address_index.txt &amp;  snmpwalk -v 2c -c  $comunity $address1  $oid_mac | awk '{print $1 \" \" $4\".\"$5\".\"$6\".\"$7\".\"$8\".\"$9}' | sed 's\/SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.2.\/'$address1'wlc\/'  &gt; \/opt\/rename\/snmp_files\/ap_mac_index.txt<\/code><\/pre>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0438\u043c\u0435\u0435\u043c 4 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0438\u0448\u0435\u043c \u0432 \u0431\u0430\u0437\u0443 SQLite:<\/p>\n<pre><code class=\"python\">import sqlite3, sys import logging  logging.basicConfig(filename='\/opt\/rename\/logg\/snmp_py.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')  def processfile(filename):     \"\"\"     \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0444\u0430\u0439\u043b\u0430.     \"\"\"     contents = []     cnt = []     print ('*** Reading ['+filename+'] ...')     try:         f = open(filename)         contents = f.read().splitlines()         f.close()     except IOError:         logging.warning (\"Error opening file: \", filename)         sys.exit(1)     for line in contents:         s = line.split(' ')         if len(s) == 2:            cnt.append(s)     return dict(cnt)  def createdick(Aps,Macs,Addresses,Speeds): \t# \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u043e\u0432     contents = {}     try:        for index in Aps.keys():           contents[index] = [Aps.get(index).lower(),Macs.get(index), Addresses.get(index), Speeds.get(index),index[:12], index[15:]]     except:           logging.warning (\"Error creating dick: \", index)      return contents  def create_db():     #\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445     conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")  # \u0438\u043b\u0438 :memory: \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 RAM     cursor = conn.cursor()     #\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b     cursor.execute(\"\"\"CREATE TABLE IF NOT EXISTS accesspoints                   (nameap TEXT ,                     mac TEXT PRIMARY KEY,                    ip TEXT ,                    duplex INTEGER,                    wlc TEXT,                    snmp_index TEXT)                \"\"\")     conn.commit()     cursor.close()     conn.close()  def insert_data_db(ApSnmpDb): \t# \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443     conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     for line in ApSnmpDb.values():         data = tuple(line)         cursor.execute('INSERT INTO accesspoints VALUES(?, ?, ?, ?, ?, ?)', data)     conn.commit()     cursor.close()     conn.close()  def delete_table(): \t# \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443     conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     query = \"DROP TABLE IF EXISTS accesspoints\"     cursor.execute(query)     conn.commit()     cursor.close()     conn.close()  def main():     ap_name_index = '\/opt\/rename\/snmp_files\/ap_name_index.txt'     ap_speed_index = '\/opt\/rename\/snmp_files\/ap_speed_index.txt'     ap_mac_index = '\/opt\/rename\/snmp_files\/ap_mac_index.txt'     ap_address_index = '\/opt\/rename\/snmp_files\/ap_address_index.txt'      ApNameIndex = processfile(ap_name_index)     ApSpeedIndex = processfile(ap_speed_index)     ApMacIndex = processfile(ap_mac_index)     ApAddressIndex = processfile(ap_address_index)      ApDb = createdick(ApNameIndex,ApMacIndex,ApAddressIndex,ApSpeedIndex)     delete_table()     create_db()     insert_data_db(ApDb)  if __name__ == '__main__':     main()<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Google Sheets \u0438 \u043f\u0438\u0448\u0435\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 SQLite, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d <u>\u0437\u0434\u0435\u0441\u044c<\/u>, \u0442\u0435\u043a\u0441\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u0430:<\/p>\n<pre><code class=\"python\">import logging  import httplib2  import apiclient.discovery  from oauth2client.service_account import ServiceAccountCredentials  from datetime import datetime, date, time  import sqlite3  logging.basicConfig(filename='\/opt\/rename\/logg\/rename_ap.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')  def readgooglesheets():     # \u0424\u0430\u0439\u043b, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 Google Developer Console     CREDENTIALS_FILE = 'creds.json'     # ID Google Sheets \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 (\u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0438\u0437 \u0435\u0433\u043e URL)     spreadsheet_id = 'id \u0433\u0443\u0433\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430'     # \u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u043c\u0441\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c service -- \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a API     credentials = ServiceAccountCredentials.from_json_keyfile_name(        CREDENTIALS_FILE,          ['https:\/\/www.googleapis.com\/auth\/spreadsheets',           'https:\/\/www.googleapis.com\/auth\/drive'])     httpAuth = credentials.authorize(httplib2.Http())     service = apiclient.discovery.build('sheets', 'v4', http = httpAuth)     # \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430     values = service.spreadsheets().values().get(              spreadsheetId=spreadsheet_id,              range='CI3:CK9584',              majorDimension='COLUMNS'     # \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f values - \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432             ).execute()     ValuesList = values[\"values\"]     return(ValuesList)   def create_db():     #\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0433\u0443\u0433\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u044b     conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     #\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b     cursor.execute(\"\"\"CREATE TABLE IF NOT EXISTS googleAps                   (ApMac TEXT ,                     ApName TEXT ,                    AccDate TEXT)                \"\"\")     print('table googleAps created')     conn.commit()     cursor.close()     conn.close()   def insert_data_db(ApDb):     #\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0433\u0443\u0433\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u0431\u0430\u0437\u0443     conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     for n in range(len(ApDb[0])):  \t   # \u0442.\u043a. \u043f\u043e\u0434\u0440\u044f\u0434\u0447\u0438\u043a\u0438 \u043d\u0435 \u043f\u0438\u0448\u0443\u0442 \u043c\u0430\u043a \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u0435\u0434\u0438\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0432\u0438\u0434\u0443        str = ApDb[0][n].replace('.', '').replace(':', '').upper()         # \u0418\u0437 \u043c\u0430\u043a \u0430\u0434\u0440\u0435\u0441\u0430 \u0433\u0443\u0433\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f apname         if len(str) == 12:  \t       # \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \".\" \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0435 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430.             ApDb[0][n] = '.'.join(a + b for a, b in zip(str[::2], str[1::2]))         #ApDb - \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0443\u0433\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u044b         data = (ApDb[0][n], ApDb[1][n].lower(), ApDb[2][n])         cursor.execute('INSERT INTO googleAps VALUES(?, ?, ?)', data)     print('added data table googleAps ')     conn.commit()     cursor.close()     conn.close()   def delete_table():     # \u041e\u0447\u0438\u0449\u0430\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443    conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     query = \"DROP TABLE IF EXISTS googleAps\"     print('table googleAps deleted ')     cursor.execute(query)     conn.commit()     cursor.close()     conn.close()   def renameap():     # \u0441\u043e\u0437\u0434\u0430\u0435\u0442 snmpget \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430    conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     # \u0414\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 2-\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e: \u043c\u0430\u043a \u0430\u0434\u0440\u0435\u0441\u0430 \u0440\u0430\u0432\u043d\u044b, \u0438\u043c\u0435\u043d\u0430 \u043d\u0435 \u0440\u0430\u0432\u043d\u044b    query = \"\"\"SELECT ApName, accesspoints.snmp_index, accesspoints.wlc FROM accesspoints      JOIN googleAps ON accesspoints.mac = googleAps.ApMac and accesspoints.nameap != googleAps.ApName\"\"\"     cursor.execute(query)     data = cursor.fetchall()     wlc_cmd = []     command=''     comunity = \"write_comunity\"     oid = '.1.3.6.1.4.1.9.9.513.1.1.1.1.5.'     for n in range(len(data)):  \t      # \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a snmpget           command = 'snmpset -v 2c -c ' + comunity + ' ' + data[n][2] + ' ' + oid + data[n][1] + ' s ' + data[n][0].lower()            # \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0443           wlc_cmd.append(command)            logging.debug(command)     conn.commit()     cursor.close()     conn.close()     return wlc_cmd   def writefile(filename, confs):     \"\"\"\"     \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0438\u0448\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u0444\u0430\u0439\u043b      \"\"\"     print ('*** Writing ['+filename+'] ...')     try:        f = open(filename,'w')        for line in confs :            f.write(line + '\\n')        f.close()     except:         logging.warning('Error writing file: ', filename)         sys.exit(1)   def write_date(LGoogle):     # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443 \u0432 \u0433\u0443\u0433\u043b \u0442\u0430\u0431\u043b\u0438\u0446\u0443    conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     # \u0414\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 2-\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u043f\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e: \u043c\u0430\u043a \u0430\u0434\u0440\u0435\u0441\u0430 \u0440\u0430\u0432\u043d\u044b, \u0434\u0430\u0442\u0430 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0430    query = \"\"\"SELECT  accesspoints.nameap FROM accesspoints      JOIN googleAps ON accesspoints.mac = googleAps.ApMac and googleAps.AccDate = '' \"\"\"     cursor.execute(query)     data = cursor.fetchall()     conn.commit()     cursor.close()     conn.close()     now = datetime.now()     date_today = now.strftime(\"%d\")+'\/'+now.strftime(\"%m\")+'\/'+now.strftime(\"%Y\")     DateGoogle = []     i = 0     for n in LGoogle[1]:         for m in data:             if m[0] == n :                 LGoogle[2][i] = date_today         DateGoogle.append([LGoogle[2][i]])         i = i+1       CREDENTIALS_FILE = '\/opt\/rename\/creds.json'     spreadsheet_id = 'id_google_table'    credentials = ServiceAccountCredentials.from_json_keyfile_name(        CREDENTIALS_FILE,        ['https:\/\/www.googleapis.com\/auth\/spreadsheets',        'https:\/\/www.googleapis.com\/auth\/drive'])     httpAuth = credentials.authorize(httplib2.Http())     service = apiclient.discovery.build('sheets', 'v4', http = httpAuth)     values = service.spreadsheets().values().batchUpdate(     spreadsheetId=spreadsheet_id,     body={         \"valueInputOption\": \"USER_ENTERED\",         \"data\": [             {\"range\": \"CK3:CK9584\",              \"majorDimension\": \"ROWS\",              \"values\": DateGoogle }             ]             }             ).execute()   def main():     wlc_conf = '\/opt\/rename\/logg\/wlc_commands.txt'     ListGoogle = readgooglesheets()     delete_table()     create_db()     insert_data_db(ListGoogle)     writefile(wlc_conf,renameap())     write_date(ListGoogle)   if __name__ == '__main__':     main()<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c:<\/p>\n<pre><code class=\"bash\">#!\/bin\/bash  file='\/opt\/rename\/logg\/wlc_commands.txt'  while read line ;  do  $line  done &lt; $file<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442 MAC \u0430\u0434\u0440\u0435\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u0436\u0434\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 hostname &#8212; \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043d\u043e\u043c\u0435\u0440, \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e \u0441\u0445\u0435\u043c\u043e\u0439 \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u0421\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u041c\u0410\u0421 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u0430\u043c\u0438, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<h3>\u041a\u0430\u043a \u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 MAC \u0430\u0434\u0440\u0435\u0441\u0430?<\/h3>\n<p>\u0412\u043e\u043f\u0440\u043e\u0441 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0440\u0435\u0448\u0438\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c, \u043d\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0440\u0443\u0431\u043b\u0435\u043c, \u043d\u043e \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0410 \u0438\u043c\u0435\u043d\u043d\u043e telegram.bot, \u043e\u0431\u0440\u0430\u0442\u0438\u0432\u0448\u0438\u0441\u044c \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u043c \u201c\u043a\u043e\u0434 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u201d \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0443\u0441 \u0432\u0441\u0435\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 pip install telebot, \u0442\u0435\u043a\u0441\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u0430:<\/p>\n<pre><code class=\"python\">import telebot import os import time import sqlite3  # \u0411\u043e\u0442 \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 \u043f\u0430\u0440\u0441\u0438\u0442 \u0432\u0441\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u0430 'check ' \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. SNMP \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u0432 crontab, \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043a\u0430\u0436\u0434\u0443\u044e \u043c\u0438\u043d\u0443\u0442\u0443.  bot = telebot.TeleBot('\u0442\u043e\u043a\u0435\u043d \u0431\u043e\u0442\u0430')  def read_db(map):     try:       conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")       cursor = conn.cursor()       query = \"\"\" SELECT  Apname, googleAps.APmac, accesspoints.duplex FROM googleAps                   LEFT JOIN accesspoints ON accesspoints.mac = googleAps.ApMac                        WHERE ApName LIKE '{}___'                       ORDER BY ApName ASC \"\"\".format(map)       cursor.execute(query)       data = cursor.fetchall()       conn.commit()       cursor.close()       conn.close()       return data     except:         bot.send_message(message.chat.id, '\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 5 \u0441\u0435\u043a\u0443\u043d\u0434')         time.sleep(1)  def create_message(AP_MAP):   try:     n = 0     msg = ''     for AP in AP_MAP:           msg+='|{:&lt;17s}|{:&lt;19s}|{:&gt;5s} Mbps|\\n'.format(AP[0], AP[1], str(AP[2]))             # &lt; - \u043f\u0440\u0438\u043c\u044b\u043a\u0430\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 ^- \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 17s - \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u044f\u0447\u0435\u0439\u043a\u0435           n = n + 1     if n &gt; 0:         msg = '\u041d\u0430\u0439\u0434\u0435\u043d\u043e {} \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435. \\n&lt;pre&gt;'.format(n)+msg+'&lt;\/pre&gt;'     else:         msg = \"\u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u044b \u0434\u0430\u043d\u043d\u044b\u0435\"     return msg   except:      bot.send_message(message.chat.id, '\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 5 \u0441\u0435\u043a\u0443\u043d\u0434')      time.sleep(1)  @bot.message_handler(content_types=['text']) def send_text(message):   try:     # \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u0435 6 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0435\u0441\u043b\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 'check' \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043a\u0440\u0438\u043f\u0442     if message.text[:5].lower() == 'check':         message.text = message.text.replace(message.text[:6],'') #\u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0441\u043b\u043e\u0432\u043e 'check '         print(message)         Ap_on_Map = read_db(message.text)         msg = create_message(Ap_on_Map)         bot.send_message(message.chat.id, msg, parse_mode='HTML')   except:     bot.send_message(message.chat.id, '\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 5 \u0441\u0435\u043a\u0443\u043d\u0434')     time.sleep(1) bot.polling()<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u043e\u0442\u0430:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/60b\/659\/af1\/60b659af19be3094e4dad7aedb92ef7e\" width=\"471\" height=\"497\"><figcaption><\/figcaption><\/figure>\n<ul>\n<li>\n<p>none &#8212; \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u043e\u0447\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u0431\u043e\u0442\u043e\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u043e\u0447\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u0438\u043b\u0438 \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 MAC \u0430\u0434\u0440\u0435\u0441\u0435;<\/p>\n<\/li>\n<li>\n<p>100 &#8212; \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 eth0 speed \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0432\u0435\u043d 100Mbps;&nbsp;<\/p>\n<\/li>\n<li>\n<p>1000 &#8212; \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 eth0 speed \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0440\u0430\u0432\u0435\u043d 1000Mbps.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u043a PoE \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0443 \u0441 \u0433\u0438\u0433\u043e\u0432\u044b\u043c\u0438 \u043f\u043e\u0440\u0442\u0430\u043c\u0438, \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 eth0 speed = 1000Mbps \u0431\u0435\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u0438\u044f.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0431\u044b\u043b \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u0434\u043e\u043b\u0433\u043e \u0438 \u043d\u0443\u0434\u043d\u043e \u0432\u044b\u044f\u0441\u043d\u044f\u0442\u044c \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e\u0447\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441 MAC \u0430\u0434\u0440\u0435\u0441\u043e\u043c 1 \u043d\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 \u0438\u043b\u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e\u0447\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430&nbsp; \u0441 MAC \u0430\u0434\u0440\u0435\u0441\u043e\u043c 2 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u043d\u043e \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u043e\u043d\u0430 \u0441\u0442\u043e\u0438\u0442. \u0410 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u201c\u0442\u0435\u0440\u043a\u0438\u201d \u0432\u0438\u0434\u0430:<\/p>\n<blockquote>\n<p>\u041c\u044b: \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u043e\u0447\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 1 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a \u0442\u043e\u0447\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 2?<\/p>\n<p>\u041c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a: \u043d\u0443 \u0442\u0430\u043a \u0432\u044b \u0436\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0435 \u043d\u0435 \u043c\u044b;<\/p>\n<p>\u041c\u044b: \u0442\u043e\u0433\u0434\u0430, \u0447\u0442\u043e \u0437\u0430 \u0442\u043e\u0447\u043a\u0430 \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435, \u041c\u0410\u0421 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0435\u0442 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435;<\/p>\n<p>\u041c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a: \u043d\u0435 \u0437\u043d\u0430\u0435\u043c \u044d\u0442\u043e \u043d\u0435 \u043d\u0430\u0448\u0430 \u0437\u043e\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0432\u0441\u0435 \u041c\u0410\u0421 \u0430\u0434\u0440\u0435\u0441\u0430 \u043c\u044b \u0432\u043d\u0435\u0441\u043b\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443.<\/p>\n<\/blockquote>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u043a\u0442\u043e \u0445\u043e\u0442\u044c \u0440\u0430\u0437 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u043b \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043e \u0447\u0435\u043c \u0438\u0434\u0435\u0442 \u0440\u0435\u0447\u044c.<\/p>\n<h3>\u041f\u0440\u0438\u0435\u043c\u043a\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u044b\u0445 \u0440\u0430\u0431\u043e\u0442<\/h3>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0443\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0440\u043e\u043a\u0438 \u043c\u044b \u0431\u044b\u043b\u0438 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u0430\u043c \u0443\u0434\u043b\u0438\u043d\u044f\u0442\u044c \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0435\u043b\u0435\u0439, \u0442\u0430\u043a\u0438\u0445:<\/p>\n<figure class=\"bordered\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d9\/399\/84b\/1d939984b4a64d0a70c763e053425d0c\" width=\"348\" height=\"360\"><figcaption><\/figcaption><\/figure>\n<p>\u0438\u043b\u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0430\u043a\u0438\u0445:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/543\/6e1\/c3b\/5436e1c3b54374b3e317b3c9f7f8ddd8\" width=\"383\" height=\"332\"><figcaption><\/figcaption><\/figure>\n<p>\u042d\u0442\u0430 \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u0430\u044f \u043c\u0435\u0440\u0430 \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u043d\u0430\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0440\u043e\u043a\u043e\u0432 \u0438 \u0431\u044e\u0434\u0436\u0435\u0442\u043e\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0438\u0434\u0435\u0435\u0439, \u043d\u043e \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u043e \u043d\u0430\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0418\u0437 \u0437\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0432 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u044f\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 eth0 speed \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u043e\u0447\u043a\u0430\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0444\u043b\u0430\u043f\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 100 \u0438 1000, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043b\u043e\u0433\u0430\u0445 PoE \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0430: <em>detected poe-out status: current_too_low. <\/em>\u041f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430.&nbsp;<\/p>\n<p>\u041a\u0430\u043a \u0436\u0435 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u0435\u043c\u043a\u0443 \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439? \u041e\u0442\u0432\u0435\u0442 \u043d\u0430\u0448\u0435\u043b\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u041f\u041e <a href=\"https:\/\/graphiteapp.org\/\" rel=\"noopener noreferrer nofollow\"><u>Grathite<\/u><\/a>. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u0434\u0438\u043d \u043d\u044e\u0430\u043d\u0441. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Graphite \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 6 \u0447\u0430\u0441\u043e\u0432. \u0418\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u044d\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<p><code>nano \/path\/to\/graphite\/configs\/storage-schemas.conf[carbon] pattern = ^carbon. retentions = 60s:90d [default1minfor_1day] pattern = .* retentions = 1m:7d,5m:30d,30m:90d,24h:1y<\/code><\/p>\n<p>\u0412\u0430\u0436\u043d\u043e: \u0415\u0441\u043b\u0438 \u0431\u044b\u043b\u0438 \u0443\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a \u043d\u0438\u043c \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c\u0441\u044f. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u043e \u0432\u0441\u0435\u0445 wcp \u0444\u0430\u0439\u043b\u0430\u0445:<\/p>\n<pre><code class=\"bash\">sudo find .\/ -type f -name '*.wsp' -exec whisper-resize --nobackup {} 1m:7d 5m:30d 30m:90d 24h:1y \\; <\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u0438\u0448\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 eth0 speed \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u0441 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043e\u0442\u0447\u0435\u0442\u0430\u043c\u0438 \u043a\u0430\u0436\u0434\u044b\u0435 5 \u043c\u0438\u043d\u0443\u0442 \u0432 <a href=\"https:\/\/graphiteapp.org\/\" rel=\"noopener noreferrer nofollow\"><u>Grathite<\/u><\/a> \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c:<\/p>\n<pre><code class=\"python\">import graphyte import sqlite3, sys import logging  logging.basicConfig(filename='\/opt\/rename\/logg\/graphite.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')  graphyte.init('ip_address_graphite', prefix='school')  def read_db(): \t#\u0427\u0438\u0442\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 sqlite     conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     # \u0412 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u0447\u043a\u0438 \u0441 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u043e\u0439 \u0434\u0430\u0442\u043e\u0439 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438 \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c.     query = \"\"\" SELECT googleAps.ApName, accesspoints.duplex FROM googleAps      LEFT JOIN accesspoints ON accesspoints.nameap = googleAps.ApName        WHERE googleAps.AccDate != '' AND googleAps.ApName != '' \"\"\"     cursor.execute(query)     data = cursor.fetchall()     conn.commit()     cursor.close()     conn.close()     return data  def create_map():     data = read_db()     ApS = []     # \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u043f\u0440\u043e\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 snmp, Duplex =0     for line in data:           if line[1] == None:               duplex = 0           else:               duplex = line[1] # \u0421\u043e\u0437\u0434\u0430\u0435\u0442 map, \u0442. \u043a. \u0412 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u0445 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445  \u0435\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b \u00ab-\u00bb, \u0430 \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u043c \u0434\u043b\u044f graphite, \u043c\u0435\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u00ab_\u00bb             map = line[0][:3]+'.'+line[0].replace(\".\", \"_\")[:len(line[0])-3]+'.'+line[0].replace(\".\", \"_\")           ApS.append([map, int(duplex)])     return ApS   def sendgraphite(map): \t# \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 graphite     for data in map:        #print(data[0],data[1])        graphyte.send(data[0],data[1])  def main():     Map = create_map()     sendgraphite(Map)  if __name__ == '__main__':     main()<\/code><\/pre>\n<\/p>\n<p>\u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 speed, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ada\/e4b\/23e\/adae4b23ef3b1405bc5cc3caca2bbf0a\" width=\"1600\" height=\"253\"><figcaption><\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9a2\/415\/c87\/9a2415c876c099e75cee9f64f2a14ef9\" width=\"1600\" height=\"223\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430 6 \u0434\u043d\u0435\u0439 \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c :<\/p>\n<pre><code class=\"bash\">#!\/bin\/bash \/dev\/null &gt;  \/opt\/rename\/average\/average.txt # maps_graphite_curl.txt  - \u0444\u0430\u0439\u043b \u0441 \u043c\u0430\u043f\u0430\u043c\u0438 cat \/opt\/rename\/graphite\/maps_graphite_curl.txt | while read line do   curl  'http:\/\/10.10.10.10:8080\/render\/?from=-10080minutes&amp;target=aliasByMetric(buiding.'$line')&amp;format=csv' | awk -F \",\" '{print $3}' &gt; \/opt\/rename\/tmp\/tmp.txt   a=$(cat \/opt\/rename\/tmp\/tmp.txt | grep 0.0 | numsum)   b=$(cat \/opt\/rename\/tmp\/tmp.txt | grep 0.0 | wc -l)   map=$(echo $line | awk -F \".\" '{print $3}' | sed 's\/_\/.\/')   echo $line   echo $b    if [[ $b -ne 0 ]]; then      echo $map  $(($a\/$b))  $(($b\/288)) &gt;&gt; \/opt\/rename\/average\/average.txt;   fi done<\/code><\/pre>\n<p>\u0418 \u043f\u0438\u0448\u0435\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443:<\/p>\n<pre><code class=\"python\">import httplib2 import apiclient.discovery from oauth2client.service_account import ServiceAccountCredentials  def opengoogledocs(data):     CREDENTIALS_FILE = '\/opt\/rename\/creds.json'     spreadsheet_id = 'id_\u0442\u0430\u0431\u043b\u0438\u0446\u044b'     credentials = ServiceAccountCredentials.from_json_keyfile_name(        CREDENTIALS_FILE,        ['https:\/\/www.googleapis.com\/auth\/spreadsheets',        'https:\/\/www.googleapis.com\/auth\/drive'])     httpAuth = credentials.authorize(httplib2.Http())     service = apiclient.discovery.build('sheets', 'v4', http = httpAuth)     values = service.spreadsheets().values().batchUpdate(     spreadsheetId=spreadsheet_id,     body={         \"valueInputOption\": \"USER_ENTERED\",         \"data\": [            # {\"range\": \"B3:C4\",            #  \"majorDimension\": \"ROWS\",            #  \"values\": [[\"This is B3\", \"This is C3\"], [\"This is B4\", \"This is C4\"]]},             {\"range\": \"a1:d9584\",              \"majorDimension\": \"ROWS\",              \"values\": data }             ]             }             ).execute() def processfile(filename):     contents = []     cnt = []     print ('*** Reading ['+filename+'] ...')     try:         f = open(filename)         contents = f.read().splitlines()         f.close()     except IOError:         print (\"Error opening file: \", filename)         sys.exit(1)     for line in contents:         cnt.append(line.replace('_','.').split(' '))      return cnt  def main():     file = '\/opt\/rename\/average\/average.txt'     AverageData = processfile(file)     opengoogledocs(AverageData)  if __name__ == '__main__':     main()<\/code><\/pre>\n<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/25a\/95c\/763\/25a95c76331ce02b77713412e0670e1a\" width=\"509\" height=\"477\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u0443\u0442\u0435\u043c \u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0443\u0436\u0435 \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0430 \u0438\u0445 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u043e\u043b\u0435\u0435 7500, \u043f\u0440\u0438\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u043b\u0438\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u0438 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438\u043c\u0435\u044e\u0442 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 eth0 speed \u043d\u0438\u0436\u0435 970, \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u043e\u0442 \u043f\u0435\u0440\u0435\u043e\u0431\u0436\u0438\u043c\u043a\u0438 RJ45 \u0440\u0430\u0437\u044a\u0435\u043c\u043e\u0432 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043c\u0435\u043d\u043e\u0439 \u043a\u0430\u0431\u0435\u043b\u044f. \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u0431\u043e\u043b\u0435\u0435 10% \u043e\u0442 \u0447\u0438\u0441\u043b\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u043e\u0432 \u0434\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u043d\u0430 100% \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u044f\u0445 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 eth0 speed \u043d\u0435 \u043d\u0438\u0436\u0435 970.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439, \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 &#8230;<\/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\/post\/531210\/\"> https:\/\/habr.com\/ru\/post\/531210\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0432\u043e\u0434\u043d\u044b\u0445, \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043a\u0440\u0443\u043f\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u043d\u0430 \u0431\u0430\u0437\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f Cisco, \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 10 \u043b\u0435\u0442 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0438\u0437:<\/p>\n<ul>\n<li>\n<p>1 348 \u0437\u0434\u0430\u043d\u0438\u0439 \u0438 \u0441\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>10 030 \u0440\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0440\u044c\u044f AIR-LAP1131G, AIR-LAP1041N (\u043e\u043a\u043e\u043b\u043e 88% \u043e\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u0447\u0438\u0441\u043b\u0430), \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u0438\u043c\u0438 CAP1602I, CAP2602I, CAP1702I, AP1832I;<\/p>\n<\/li>\n<li>\n<p>WISM1, WISM2, WLC 8540.<\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 10 \u043b\u0435\u0442 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441\u0442\u0430\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u043e\u043a \u0438 \u043a\u0430\u043f\u0440\u0435\u043c\u043e\u043d\u0442\u043e\u0432. \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0438\u043d\u0436\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u043b\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 \u0441\u0442\u0440\u043e\u044f, \u0447\u0442\u043e \u0432 \u043a\u0443\u043f\u0435 \u0441 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0435\u0439 \u0440\u043e\u0441\u0442\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c \u0436\u0430\u043b\u043e\u0431\u0430\u043c \u043d\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<p>\u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0441\u0440\u043e\u043a\u043e\u0432 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0431\u044e\u0434\u0436\u0435\u0442\u0430 \u0440\u0435\u0448\u0435\u043d\u043e, \u0447\u0442\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044b \u0441\u0435\u0442\u0438 \u0432 589 \u0437\u0434\u0430\u043d\u0438\u044f\u0445, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0430\u0446\u0438\u0438.&nbsp;<\/p>\n<p>\u0421\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u0430 \u0432\u044b\u0448\u0435\u0434\u0448\u0438\u0445 \u0438\u0437 \u0441\u0442\u0440\u043e\u044f \u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u043e\u0432\u044b\u043c\u0438 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0434\u0430\u043d\u0438\u0439 \u0438 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u0438\u043d\u0436\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043d\u0430 PoE \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439 \u0441\u0432\u044f\u0437\u0438 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043e\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0441\u0440\u043e\u043a\u043e\u0432 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c &#8212; \u044d\u0442\u043e \u0437\u0430\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e &#8212; \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0434\u0438\u043e\u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/www.ekahau.com\/\" rel=\"noopener noreferrer nofollow\"><u>Ekahau<\/u><\/a>. \u041e\u0431\u044a\u0435\u0445\u0430\u0442\u044c \u0432\u0441\u0435 589 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u043e, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0441\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u0433\u043e\u0440\u043e\u0434\u0441\u043a\u0438\u0435, \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u0430\u0445 \u0438 \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0435\u043b\u0430\u0445, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u044d\u043a\u0441\u0442\u0440\u0430\u043f\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. <\/p>\n<p>C\u043a\u0430\u0437\u0430\u043d\u043e &#8212; \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438&nbsp; \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0432\u044b\u0435\u0437\u0434\u043d\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0438 \u0432 \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u0435 \u0441\u0440\u043e\u043a\u0438 \u043e\u0431\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043e 89 \u0437\u0434\u0430\u043d\u0438\u0439 \u0438 \u0441\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0439, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0432 <a href=\"https:\/\/www.qlik.com\/\" rel=\"noopener noreferrer nofollow\"><u>Qlik<\/u><\/a> \u0438 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044b \u0432\u0441\u0435\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0443. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u0431\u0449\u0430\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0439, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0442\u0438 \u043d\u0430 589 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f 8014 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 (\u0437\u0430\u0431\u0435\u0433\u0430\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u043f\u0435\u0440\u0435\u0434, \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0439 \u044d\u043a\u0441\u0442\u0440\u0430\u043f\u043e\u043b\u044f\u0446\u0438\u0438 \u043d\u0435 \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b\u0430 1% :).<\/p>\n<h3>\u041a\u0430\u043a\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c?<\/h3>\n<p>\u0418 \u0442\u0430\u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043c\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043b\u0438, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043a\u0443\u043f\u0430\u0442\u044c. \u0418\u043c\u0435\u044f \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u043c\u044b \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0435\u0442\u0435\u0439 \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u0432\u044f\u0437\u043a\u0438 Mikrotik cAP AC + CRS328-24P-4S+RM \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 PoE \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430 \u0438 CapsMan. \u041f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c 589 CapsMan \u043d\u0430\u0441 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043c\u0443\u0449\u0430\u043b\u0430, \u0431\u043b\u0430\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u044b\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u201c\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043b\u043a\u0438 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u201d, Ansible \u043d\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u043d\u0435 \u043f\u043e\u043d\u0430\u0441\u043b\u044b\u0448\u043a\u0435.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430\u0448 \u0441\u0442\u0430\u0440\u044b\u0439 \u0438 \u0434\u043e\u0431\u0440\u044b\u0439 \u043f\u0430\u0440\u0442\u043d\u0435\u0440, \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Cisco, \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435 \u0441\u043c\u043e\u0433 \u0431\u044b \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c \u0434\u043e\u043d \u041a\u043e\u0440\u043b\u0435\u043e\u043d\u0435 :), \u0441\u0442\u043e\u0438\u0442\u044c \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043d\u0435 \u0446\u0435\u043d\u0430.<\/p>\n<p>\u0418\u0442\u0430\u043a \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0443 Cisco \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438 \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u0435\u0434\u0443\u0442 \u0438\u0434\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u2026<\/p>\n<h3>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443<\/h3>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0438\u043d\u044f\u043b\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u0441\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 \u0434\u0435\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 AIR-AP1815I-R, \u044d\u0442\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442 \u043b\u043e\u0433\u0438\u0441\u0442\u0438\u043a\u0443 \u0438 \u043f\u0443\u0441\u043a\u043e\u043d\u0430\u043b\u0430\u0434\u043a\u0443 \u043d\u0430\u0448\u0438\u043c \u043c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u0430\u043c. \u0414\u0435\u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0430 \u0438\u0445 \u043d\u0435 \u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043c\u0430\u043b\u043e 4175 \u0448\u0442\u0443\u043a, \u0440\u0435\u0448\u0435\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0417\u0418\u041f, \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0440\u0430\u0434\u0438\u043e\u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0442\u043e\u043c \u0436\u0435 <a href=\"https:\/\/www.ekahau.com\/\" rel=\"noopener noreferrer nofollow\"><u>Ekahau<\/u><\/a> \u0438\u043d\u0430\u0447\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f&nbsp; \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435. \u041a \u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e (\u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0435\u043c\u0443 \u0437\u0430 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u043e, \u0447\u0442\u043e \u043c\u043e\u043d\u0442\u0430\u0436\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u0440\u044f\u0434\u0447\u0438\u043a, \u0432\u043e\u0442 \u0435\u0433\u043e \u0442\u043e \u0438 \u0440\u0435\u0448\u0435\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u044c \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0442\u044f\u0436\u0435\u043b\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u043f\u043e\u0434\u0440\u044f\u0434\u0447\u0438\u043a\u043e\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/nextcloud.com\/\" rel=\"noopener noreferrer nofollow\"><u>Nextcloud<\/u><\/a>, \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0437\u0430 \u0445\u043e\u0434\u043e\u043c \u0440\u0430\u0431\u043e\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d <a href=\"https:\/\/www.google.ru\/intl\/ru\/sheets\/about\/\" rel=\"noopener noreferrer nofollow\"><u>Google Sheets<\/u><\/a>, \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0435\u0445\u0430\u043b\u0438\u2026. \ud83d\ude42<\/p>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043a\u0430\u0436\u0443\u0449\u0443\u044e\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0439. \u041f\u043e\u0434\u0440\u044f\u0434\u0447\u0438\u043a \u0432\u044b\u0435\u0437\u0436\u0430\u0435\u0442 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u0443\u0435\u0442 \u043f\u043b\u0430\u043d\u044b \u0411\u0422\u0418 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0438, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0432 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0432 \u043e\u0431\u043b\u0430\u043a\u0435.<\/p>\n<figure class=\"bordered full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0441\u0445\u0435\u043c\u0443 \u0440\u0430\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0442\u0430\u043a\u0436\u0435 \u043a\u043b\u0430\u0434\u0435\u043c \u0432 \u043e\u0431\u043b\u0430\u043a\u043e.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041c\u043e\u043d\u0442\u0430\u0436\u043d\u0438\u043a\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0438 \u0442\u043e\u0447\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u044f\u0436\u043a\u043e\u0439 \u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043b\u0438\u043d\u0438\u0439.<\/p>\n<p>\u041d\u043e \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u043e\u0432 \u0438 \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0437\u0430 \u044d\u0442\u0438\u043c \u043c\u044b \u0438 \u0441\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043c\u044b \u043d\u0435 \u043d\u0430\u0448\u043b\u0438 \u0438 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432\u0434\u0440\u0443\u0433 \u043a\u043e\u043c\u0443 \u043f\u043e\u043c\u043e\u0436\u0435\u0442.<\/p>\n<h3>\u0418 \u0442\u0430\u043a \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u2026<\/h3>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u0433\u043e OpenSource:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/graphiteapp.org\/\" rel=\"noopener noreferrer nofollow\">Graphite<\/a> + <a href=\"https:\/\/grafana.com\/\" rel=\"noopener noreferrer nofollow\">Graphana<\/a> \u2014 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.sqlite.org\/index.html\" rel=\"noopener noreferrer nofollow\">SQLite<\/a> \u2014 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.python.org\/\" rel=\"noopener noreferrer nofollow\">Python<\/a> \u0438 BASH \u2014  \u0441\u043a\u0440\u0438\u043f\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>Telegram bot \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0442\u043e\u0447\u0435\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043c\u044b \u0432\u044b\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 <a href=\"https:\/\/www.google.ru\/intl\/ru\/sheets\/about\/\" rel=\"noopener noreferrer nofollow\"><u>Google Sheets<\/u><\/a> \u0432\u043e\u0442 \u0435\u0435 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0432\u0438\u0434:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p><em>\u0412\u0441\u0435 \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u0430 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u0432\u044b\u043c\u044b\u0448\u043b\u0435\u043d\u044b \u0438 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \ud83d\ude42&nbsp;<\/em><\/p>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e bash \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0434\u043b\u044f \u043e\u043f\u0440\u043e\u0441\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 WLC \u043f\u043e SNMP:<\/p>\n<pre><code class=\"bash\">#!\/bin\/bash  #snmp OID \u0434\u043b\u044f Duplex, \u0434\u043b\u044f id \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u0440\u043e\u0432\u043e\u0434\u0443: oid_speed=\".1.3.6.1.4.1.9.9.513.1.2.2.1.11\"  #snmp OID \u0434\u043b\u044f Ap_Name, \u0434\u043b\u044f id \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Ap_Name: oid_name=\"SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5\"  #snmp OID \u0434\u043b\u044f Ap_Ip_Address, \u0434\u043b\u044f id \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Ap ip Address: oid_address=\".1.3.6.1.4.1.14179.2.2.1.1.19\" #snmp OID \u0434\u043b\u044f Ap_mac_address, \u0434\u043b\u044f id \u0442\u043e\u0447\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Ap mac Address:  oid_mac=\".1.3.6.1.4.1.9.9.513.1.1.1.1.2\"  #\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c snmp v2 community community=\"snmp_comunity\"  #\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c ip \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 address1=\"10.x.y.z\"  address2=\"10.x1.y1.z1\"  snmpwalk -v 2c -c  $comunity $address1  $oid_name | awk '{print $1 $4}' | sed 's\/SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5.\/'$address1'wlc\/' | sed 's\/\"\/ \/' | sed 's\/\"\/\/' &gt; \/opt\/rename\/snmp_files\/ap_name_index.txt &amp;  snmpwalk -v 2c -c  $comunity $address1  $oid_speed | awk '{print substr($1, 1, length($1)-2) \" \" $4}' | sed 's\/SNMPv2-SMI::enterprises.9.9.513.1.2.2.1.11.\/'$address1'wlc\/' | uniq  &gt; \/opt\/rename\/snmp_files\/ap_speed_index.txt &amp;  snmpwalk -v 2c -c  $comunity $address1  $oid_address | awk '{print $1 \" \" $4}' | sed 's\/SNMPv2-SMI::enterprises.14179.2.2.1.1.19.\/'$address1'wlc\/'  &gt; \/opt\/rename\/snmp_files\/ap_address_index.txt &amp;  snmpwalk -v 2c -c  $comunity $address1  $oid_mac | awk '{print $1 \" \" $4\".\"$5\".\"$6\".\"$7\".\"$8\".\"$9}' | sed 's\/SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.2.\/'$address1'wlc\/'  &gt; \/opt\/rename\/snmp_files\/ap_mac_index.txt<\/code><\/pre>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0438\u043c\u0435\u0435\u043c 4 \u0444\u0430\u0439\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0438\u0448\u0435\u043c \u0432 \u0431\u0430\u0437\u0443 SQLite:<\/p>\n<pre><code class=\"python\">import sqlite3, sys import logging  logging.basicConfig(filename='\/opt\/rename\/logg\/snmp_py.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')  def processfile(filename):     \"\"\"     \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0444\u0430\u0439\u043b\u0430.     \"\"\"     contents = []     cnt = []     print ('*** Reading ['+filename+'] ...')     try:         f = open(filename)         contents = f.read().splitlines()         f.close()     except IOError:         logging.warning (\"Error opening file: \", filename)         sys.exit(1)     for line in contents:         s = line.split(' ')         if len(s) == 2:            cnt.append(s)     return dict(cnt)  def createdick(Aps,Macs,Addresses,Speeds): \t# \u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u043e\u0432     contents = {}     try:        for index in Aps.keys():           contents[index] = [Aps.get(index).lower(),Macs.get(index), Addresses.get(index), Speeds.get(index),index[:12], index[15:]]     except:           logging.warning (\"Error creating dick: \", index)      return contents  def create_db():     #\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445     conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")  # \u0438\u043b\u0438 :memory: \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 RAM     cursor = conn.cursor()     #\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b     cursor.execute(\"\"\"CREATE TABLE IF NOT EXISTS accesspoints                   (nameap TEXT ,                     mac TEXT PRIMARY KEY,                    ip TEXT ,                    duplex INTEGER,                    wlc TEXT,                    snmp_index TEXT)                \"\"\")     conn.commit()     cursor.close()     conn.close()  def insert_data_db(ApSnmpDb): \t# \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443     conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     for line in ApSnmpDb.values():         data = tuple(line)         cursor.execute('INSERT INTO accesspoints VALUES(?, ?, ?, ?, ?, ?)', data)     conn.commit()     cursor.close()     conn.close()  def delete_table(): \t# \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0443     conn = sqlite3.connect(\"\/opt\/rename\/db\/ApsSnmpDatabase.db\")     cursor = conn.cursor()     query = \"DROP TABLE IF EXISTS accesspoints\"     cursor.execute(query)     conn.commit()     cursor.close()     conn.close()  def main():     ap_name_index = '\/opt\/rename\/snmp_files\/ap_name_index.txt'     ap_speed_index = '\/opt\/rename\/snmp_files\/ap_speed_index.txt'     ap_mac_index = '\/opt\/rename\/snmp_files\/ap_mac_index.txt'     ap_address_index = '\/opt\/rename\/snmp_files\/ap_address_index.txt'      ApNameIndex = processfile(ap_name_index)     ApSpeedIndex = processfile(ap_speed_index)     ApMacIndex = processfile(ap_mac_index)     ApAddressIndex = processfile(ap_address_index)      ApDb = createdick(ApNameIndex,ApMacIndex,ApAddressIndex,ApSpeedIndex)     delete_table()     create_db()     insert_data_db(ApDb)  if __name__ == '__main__':     main()<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Google Sheets \u0438 \u043f\u0438\u0448\u0435\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 SQLite, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d <u>\u0437\u0434\u0435\u0441\u044c<\/u>, \u0442\u0435\u043a\u0441\u0442 \u0441\u043a\u0440\u0438\u043f\u0442\u0430:<\/p>\n<pre><code class=\"python\">import logging  import httplib2  import apiclient.discovery  from oauth2client.service_account import ServiceAccountCredentials  from datetime import datetime, date, time  import sqlite3  logging.basicConfig(filename='\/opt\/rename\/logg\/rename_ap.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')  def readgooglesheets():     # \u0424\u0430\u0439\u043b, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0432 Google Developer Console     CREDENTIALS_FILE = 'creds.json'     # ID<\/code><\/pre>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-314234","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314234","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=314234"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314234\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=314234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=314234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=314234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}