{"id":465531,"date":"2025-07-01T15:26:23","date_gmt":"2025-07-01T15:26:23","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=465531"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=465531","title":{"rendered":"<span>Paramiko, netmiko, astarmiko \u2014 \u0447\u0442\u043e, \u043e\u043f\u044f\u0442\u044c?<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442 Habr!<\/p>\n<p>\u042f \u0443\u0436\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0432\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e  <a href=\"https:\/\/habr.com\/ru\/articles\/903902\/\" rel=\"noopener noreferrer nofollow\">Yast Another Config Manipulation \u0438\u043b\u0438 \u0437\u0430\u0447\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434?<\/a> \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438 \u043a\u043d\u0438\u0433\u0435 \u041d\u0430\u0442\u0430\u043b\u044c\u0438 \u0421\u0430\u043c\u043e\u0439\u043b\u0435\u043d\u043a\u043e\u00a0<a href=\"https:\/\/pyneng.readthedocs.io\/ru\/latest\/\" rel=\"noopener noreferrer nofollow\">Python \u0434\u043b\u044f\u00a0\u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432<\/a><\/p>\n<p>\u041d\u0430\u0447\u043d\u0443 \u0438 \u044d\u0442\u0443. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438 \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 Python &#8212; \u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u043a\u043d\u0438\u0433\u0438!<\/p>\n<p>\u0410 \u0435\u0449\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442  \u043c\u043e\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/\" rel=\"noopener noreferrer nofollow\"><strong>Astarmiko<\/strong><\/a>\u00a0\u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 Python-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0447\u0435\u0440\u0435\u0437 SSH, \u043a\u043e\u0442\u043e\u0440\u044b\u0439  \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0438\u0437 \u043a\u043d\u0438\u0433\u0438.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043c\u043e\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u0431\u044b\u043b\u0430 \u0432\u0441\u044f \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c (\u043d\u0430\u0448\u0435\u0433\u043e \u0444\u0438\u043b\u0438\u0430\u043b\u0430), \u043c\u043d\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0441\u043a\u0443\u0447\u0438\u043b\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u0432 &#171;\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0435&#187;.<\/p>\n<p>\u0427\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e netmiko:<\/p>\n<p> <code>{Router1: {<\/code><br \/>                        <code>device_type: cisco_ios,<\/code><br \/>                        <code>ip: some_ip_1,<\/code><br \/>                        <code>user: some_user,<\/code><br \/>                        <code>password: some_password<\/code><br \/><code>           }<\/code><br \/> <code>}<\/code><br \/>\u041f\u043e\u043d\u0438\u043c\u0430\u044f, \u0447\u0442\u043e \u0443\u0447\u0435\u0442\u043a\u0430 \u043d\u0430 tacacs&#8217;\u0435 \u0443 \u043c\u0435\u043d\u044f \u043e\u0434\u043d\u0430 &#8212; \u0432\u044b\u043a\u0438\u043d\u0443\u043b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b <strong><em>user<\/em><\/strong> \u0438 <strong><em>password<\/em><\/strong><\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0434 \u043f\u0438\u0442\u043e\u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u043b \u0441\u0430\u043c \u0442\u0438\u043f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 &#8212; Router (R) \u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440 \u0443\u0440\u043e\u0432\u043d\u044f L2 \u0438\u043b\u0438 L3. \u0415\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e &#171;\u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b&#187;&#8230;<\/p>\n<p><strong>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u043e\u0435 <em>\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0422\u0417<\/em> \u0437\u0432\u0443\u0447\u0430\u043b\u043e \u0442\u0430\u043a:<\/strong><br \/>\u0437\u0432\u043e\u043d\u0438\u0442 \u041c\u0430\u0440\u044c\u0412\u0430\u043d\u043d\u0430, \u0447\u0442\u043e-\u0442\u043e \u0441\u0435\u0442\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0438 \u043d\u0430\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0432  \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0440\u0442, \u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430, \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0435\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440?<br \/><strong>\u0418 <em>\u0432\u0442\u043e\u0440\u043e\u0435 \u0422\u0417<\/em> \u0437\u0432\u0443\u0447\u0430\u043b\u043e<\/strong> &#8212; \u0447\u0442\u043e \u0442\u043e \u0441 \u043d\u0430\u0441\u043a\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c rancid \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c huawei, \u0430 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u044f \u0436\u0435 \u043f\u0438\u0442\u043e\u043d\u0438\u0441\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \ud83d\ude42 \u0434\u0430\u0432\u0430\u0439 \u0441\u0430\u043c \u043d\u0430\u043f\u0438\u0448\u0443 \u0431\u044d\u043a\u0430\u043f.<\/p>\n<p>\u0410 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u0448\u043b\u043e &#8212; \u0434\u043e\u0431\u0430\u0432\u044c \u0432 ACL \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 150 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 IP \u0430\u0434\u0440\u0435\u0441 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u0441\u043b\u0443\u0436\u0431\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0438\u043b\u0438 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0439 ACL \u043d\u0430 \u0432\u0441\u0435\u0445 \u0440\u043e\u0443\u0442\u0435\u0440\u0430\u0445 \u0438 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435\u0442, \u0434\u043e\u0431\u0430\u0432\u044c. \u0410 \u0440\u043e\u0443\u0442\u0435\u0440\u044b \u0443 \u043d\u0430\u0441 \u0438 Cisco \u0438 Huawei \u0438 Eltex. \u0418\u043b\u0438 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0439 \u0431\u044d\u043a\u0430\u043f \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0432\u0441\u0435\u0439 \u0430\u043a\u0442\u0438\u0432\u043a\u0438 (\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f) \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0434\u043d\u044f.<\/p>\n<p>\u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e (\u0438 \u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e) \u0443\u0436\u0435 \u043b\u0435\u0442 5  \u0442\u0440\u0443\u0434\u0438\u0442\u0441\u044f \u043c\u043e\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/tree\/main\" rel=\"noopener noreferrer nofollow\"><strong><em>astarmiko<\/em><\/strong><\/a><\/p>\n<details class=\"spoiler\">\n<summary>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439, \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u043c \u043f\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u0438\u043c\u043e\u043b\u043e\u0433\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e <strong>paramiko<\/strong> &#8212; (\u043f\u0430\u0301\u0440\u0430\u043c\u0438\u043a\u043e) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u044f\u043f\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430\u00a0<strong>\u300c\u043f\u0430\u0440\u0430-\u043c\u0438\u043a\u043e\u300d<\/strong>\u00a0(\u043f\u0430\u0440\u0430\u0448\u044e\u0442\u0438\u0441\u0442 + \u5b50 \u00ab\u043a\u043e\u00bb \u2013 \u0441\u0443\u0444\u0444\u0438\u043a\u0441, \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0439 \u00ab\u0440\u0435\u0431\u0451\u043d\u043e\u043a\u00bb \u0438\u043b\u0438 \u00ab\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439\u00bb).<\/p>\n<ul>\n<li>\n<p><strong>\u0421\u043c\u044b\u0441\u043b<\/strong>: &#8212; <strong>\u300c\u30d1\u30e9\u300d (\u043f\u0430\u0440\u0430)<\/strong>\u00a0\u2013 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u00a0<em>&#171;\u043f\u0430\u0440\u0430\u0448\u044e\u0442&#187;<\/em>\u00a0(\u0430\u043d\u0433\u043b.\u00a0<em>parachute<\/em>), \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<em>&#171;parallel&#187;<\/em>\u00a0(\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439). &#8212; <strong>\u300c\u30df\u30b3\u300d (\u043c\u0438\u043a\u043e)<\/strong>\u00a0\u2013 \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u00ab\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439\u00bb (\u043a\u0430\u043a \u0432\u00a0<em>&#171;\u0440\u0435\u0431\u0451\u043d\u043e\u043a&#187;<\/em>).<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u0434\u0435\u044f<\/strong>: \u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0434\u0443\u043b\u044f (Jeff Forcier, 2003) \u0445\u043e\u0442\u0435\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u0434\u0435\u044e \u00ab\u043b\u0451\u0433\u043a\u043e\u0433\u043e\u00bb \u0438 \u00ab\u043f\u0440\u043e\u0432\u043e\u0440\u043d\u043e\u0433\u043e\u00bb SSH-\u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u00a0<strong>Netmiko<\/strong>\u00a0\u2013 \u044d\u0442\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f\u00a0<strong>&#171;Net&#187;<\/strong>\u00a0(\u0441\u0435\u0442\u044c) \u0438\u00a0<strong>&#171;miko&#187;<\/strong>\u00a0(\u043e\u0442 Paramiko).<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043c\u044b\u0441\u043b<\/strong>: &#8212; <strong>&#171;Net&#187;<\/strong>\u00a0\u2013 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 (Cisco, Juniper \u0438 \u0434\u0440.). &#8212; <strong>&#171;miko&#187;<\/strong>\u00a0\u2013 \u043e\u0442\u0441\u044b\u043b\u043a\u0430 \u043a Paramiko, \u0442\u0430\u043a \u043a\u0430\u043a Netmiko \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u0434\u0435\u044f<\/strong>: \u0410\u0432\u0442\u043e\u0440 (Kirk Byers, 2014) \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u00a0<strong>&#171;\u0441\u0435\u0442\u0435\u0432\u043e\u0439 (Net) \u0432\u0430\u0440\u0438\u0430\u043d\u0442 Paramiko&#187;<\/strong>, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0449\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. <\/p>\n<p>A \u0432 \u0434\u0430\u043b\u0435\u043a\u043e\u043c 1998 \u0433\u043e\u0434\u0443, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044f \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0441\u0435\u0431\u0435 alias   <strong>astar <\/strong>\u0418 \u043d\u0435 \u0434\u0443\u043c\u0430\u043b \u044f \u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0431 &#171;<em>a Star<\/em>&#187; \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u043e\u0432\u0443\u0442 \u043c\u0435\u043d\u044f \u0410\u043d\u0434\u0440\u0435\u0439 \u0421\u0442\u0430\u0440\u043a\u043e\u0432 (\u0445\u043e\u0442\u044f \u044f \u043f\u043e\u0442\u043e\u043c \u0441\u0432\u043e\u0435 \u043f\u043e\u0433\u043e\u043d\u044f\u043b\u043e \u043e\u0431\u044b\u0433\u0440\u044b\u0432\u0430\u043b \u0432 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435) \u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 &#8212; AstarPhone, AstarIPad, AstarMacAir, Astarpoint \u0438 \u0442.\u0434. <br \/>\u0442\u0430\u043a \u0447\u0442\u043e \u0443 \u043c\u043e\u0435\u0439 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430\u0434 netmiko \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0448\u0430\u043d\u0441\u043e\u0432 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \ud83d\ude42<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h4>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043c\u043e\u0434\u0443\u043b\u044f astarmiko<\/h4>\n<p>\u044d\u0442\u043e \u0441\u0435\u0442\u044c \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0422.\u0435. \u0432\u0441\u0435 \u043c\u043e\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441 Activka(\u043a\u043e\u043d\u0444\u0438\u0433_\u043c\u043e\u0435\u0439_\u0441\u0435\u0442\u0438)<br \/>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430:   <strong>myactivka = Activka(&#8216;activka_byname.yaml&#8217;), <\/strong>\u0433\u0434\u0435 &#8216;activka_byname.yaml&#8217; &#8212; \u0444\u0430\u0439\u043b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YAML \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0441\u0451\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, (\u0441\u043c. <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/DOCUMENTATION\/activka_byname_ru.md\" rel=\"noopener noreferrer nofollow\"><strong>activka_byname_<\/strong><\/a><a href=\"http:\/\/ru.md\" rel=\"noopener noreferrer nofollow\"><strong>ru.md<\/strong><\/a>)<br \/>\u041e\u0431\u044a\u0435\u043a\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u043c\u0435\u044e\u0442 <strong><em>\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430<\/em><\/strong>:<br \/>&#8212; <strong>ma.devices<\/strong> &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0435\u043d \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 \u0441\u0435\u0442\u0438<br \/>&#8212; <strong>ma.realdevices<\/strong> &#8212; \u0442\u0435 \u0436\u0435 \u0438\u043c\u0435\u043d\u0430 \u043d\u043e \u0432\u0441\u0435 \u0431\u0443\u043a\u0432\u044b \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0438 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u044b \u0432\u0441\u0435 \u043d\u0435 \u0431\u0443\u043a\u0432\u044b \u043d\u0435 \u0446\u0438\u0444\u0440\u044b (.isalnum())<br \/>&#8212; <strong>ma.levels<\/strong> &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0435\u043d \u0441 \u0442\u0438\u043f\u043e\u043c \u0430\u043a\u0442\u0438\u0432\u043a\u0438  R, L2, L3<br \/>&#8212; <strong>ma.segment<\/strong> &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0435\u043d \u043f\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u043c \u0441\u0435\u0442\u0438 (\u0441\u043c\u043e\u0442\u0440\u0438 \u043d\u0438\u0436\u0435)<br \/>\u0418 \u0440\u0430\u0437\u043d\u044b\u0435 &#171;\u0433\u043b\u0430\u0433\u043e\u043b\u044b&#187; &#8212; \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f <strong><em>send_command, getinfo<\/em><\/strong> \u0438 \u0442.\u043f.<\/p>\n<p><strong><em>\u041e\u0431\u0449\u0438\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 Activka<\/em><\/strong><br \/> myactivka.\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c(\u0433\u0434\u0435 = myactivka.\u0432\u044b\u0431\u0440\u0430\u0442\u044c_\u043f\u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c, \u0447\u0442\u043e = \u043e\u0434\u043d\u0430_\u043a\u043e\u043c\u0430\u043d\u0434\u0430_\u0438\u043b\u0438_\u0441\u043f\u0438\u0441\u043e\u043a )<\/p>\n<p>\u0412 \u043e\u0441\u043d\u043e\u0432\u0443 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u043b\u0451\u0433 YAML \u0444\u0430\u0439\u043b (<strong><em>activka_byname.yaml<\/em><\/strong>) \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430:<\/p>\n<p><code>Router1:<br \/> device_type: cisco_ios<br \/> ip: some_ip_1<br \/> Router2:<br \/> device_type: huawei<br \/> ip: some_ip_2<br \/> Switch1:<br \/> device_type: huaweivrrp<br \/> ip: some_ip_3<br \/> Switch2:<br \/> device_type: cisco_ios<br \/> ip: some_ip_4<br \/> LEVEL:<br \/> Router1: R<br \/> Router2: R<br \/> Switch1: L3<br \/> Switch2: L2<br \/> SEGMENT:<br \/> Router1: ``<br \/> Router2: Othe_area_of_Network<br \/> Switch1: City1<br \/> Switch2: Place2<\/code><\/p>\n<p>\u0433\u0434\u0435:<br \/> <strong>device_type<\/strong> &#8212; \u0442\u0438\u043f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432 netmiko<br \/> <strong>ip<\/strong> &#8212; ip \u0430\u0434\u0440\u0435\u0441 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<br \/> <strong>LEVEL<\/strong> &#8212; \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440 (R), L2 \u0438\u043b\u0438 L3 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440, \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0438\u043c\u0435\u0435\u0442 \u043b\u0438 \u0441\u043c\u044b\u0441\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 arp \u0442\u0430\u0431\u043b\u0438\u0446\u044b (R), \u0442\u0430\u0431\u043b\u0438\u0446\u044b MAC \u0430\u0434\u0440\u0435\u0441\u043e\u0432 (L2) \u0438\u043b\u0438 \u0438 \u0442\u043e\u0433\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e (L3) &#8212; \u0434\u0430 \u043c\u0430\u043b\u043e \u043b\u0438 \u0435\u0449\u0435 \u0437\u0430\u0447\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u043e\u0433\u0438\u043a\u0435 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c<br \/> <strong>SEGMENT<\/strong>:<br \/> \u0442\u0443\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435.<br \/> \u0441\u0445\u0435\u043c\u0443 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d04\/324\/7a1\/d043247a154d4f71f04ea91c75a1f615.png\" alt=\"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0441\u0435\u0442\u0438\" title=\"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0441\u0435\u0442\u0438\" width=\"937\" height=\"730\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d04\/324\/7a1\/d043247a154d4f71f04ea91c75a1f615.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d04\/324\/7a1\/d043247a154d4f71f04ea91c75a1f615.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0441\u0435\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u044d\u0442\u043e  \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u043b\u044c\u0446\u0430 \u0412\u041e\u041b\u0421, \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043f\u043e \u0420\u0420\u041b, \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430\u043c, \u0412\u0427,  \u0438 \u0432 \u043c\u043e\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (Putty + SupperPutty) \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0431\u0438\u0442\u043e \u043f\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c <strong><em>SEG A &#8230;.. SEG I,<\/em><\/strong> \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0431\u044d\u043a\u0430\u043f\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0436\u0435 \u0438\u043c\u0435\u043d\u0430\u043c\u0438. \u042f \u043c\u044b\u0441\u043b\u044e \u043e \u0441\u0435\u0442\u0438 \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0443\u0441\u043a\u0430\u043c\u0438, \u0442\u0430\u043a \u043f\u0440\u043e\u0449\u0435 \u0442\u0440\u0430\u0431\u043b\u0448\u0443\u0442\u0438\u0442\u044c.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c <strong>SEGMENT<\/strong> &#8212; \u044d\u0442\u043e \u043b\u044e\u0431\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0432\u0430\u043c \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u0442\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b<\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/base.py\" rel=\"noopener noreferrer nofollow\"><code>astarmiko\/base.py<\/code><\/a>\u00a0\u2014 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441\u00a0<code>Activka<\/code>\u00a0\u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/async_exec.py\" rel=\"noopener noreferrer nofollow\"><code>astarmiko\/async_exec.py<\/code>\u00a0<\/a>\u2014 \u043a\u043b\u0430\u0441\u0441\u00a0<code>ActivkaAsync<\/code>\u00a0\u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f SSH-\u043a\u043e\u043c\u0430\u043d\u0434<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/log_config.py\" rel=\"noopener noreferrer nofollow\"><code>astarmiko\/log_config.py<\/code><\/a>\u00a0\u2014 \u0433\u0438\u0431\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (JSON, stdout)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/scripts\/fh.py\" rel=\"noopener noreferrer nofollow\"><code>scripts\/fh.py<\/code><\/a>\u00a0\u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 FindHost: \u043f\u043e\u0438\u0441\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e IP \u0438\u043b\u0438 MAC (\u0441 \u043d\u0435\u0435 \u0442\u043e \u0432\u0441\u0435 \u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/scripts\/acm.py\" rel=\"noopener noreferrer nofollow\"><code>scripts\/acm.py<\/code><\/a>\u00a0\u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 ACtivkaManagment: CLI \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/tree\/main\/astarmiko\/YAML\" rel=\"noopener noreferrer nofollow\"><code>YAML\/<\/code>\u00a0<\/a>\u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043c\u0430\u043f\u043f\u0438\u043d\u0433 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/tree\/main\/astarmiko\/TEMPLATES\" rel=\"noopener noreferrer nofollow\"><code>TEMPLATES\/<\/code><\/a>\u00a0\u2014 \u0448\u0430\u0431\u043b\u043e\u043d\u044b TextFSM \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 <code>YAML\/<\/code> \u0438 <code>TEMPLATES\/<\/code>\u043c\u043e\u0433\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043d\u043e \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e (..\/) \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043a\u0430\u043a <strong><em>localpath <\/em><\/strong><br \/>\u041b\u044e\u0431\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0431\u0430\u0437\u0438\u0440\u0443\u044e\u0449\u0430\u044f\u0441\u044f \u043d\u0430 astarmiko \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YAML (\u0435\u0433\u043e \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0438 \u043b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438)<br \/> <a href=\"http:\/\/fh.py\" rel=\"noopener noreferrer nofollow\">fh.py<\/a> \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0449\u0435\u0442 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435,  \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u0444\u0430\u0439\u043b fh.yaml, <br \/>\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044f \u043d\u0430\u0437\u0432\u0430\u043b:<\/p>\n<details class=\"spoiler\">\n<summary>astarmiko.yaml   \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/summary>\n<div class=\"spoiler__content\">\n<h4>localpath: ~\/astarmiko\/<\/h4>\n<p>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u043f\u0443\u0442\u0438 \u0434\u043e \u043f\u0430\u043f\u043e\u043a \u0438\u043b\u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 astarmiko.  textFSM \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0438 (\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YAML) \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0432 <strong><em>~\/astarmiko\/ TEMPLATES\/<\/em><\/strong> \u0438 <strong><em>~\/astarmiko\/ YAML\/<\/em><\/strong><\/p>\n<p>\u043f\u0443\u0442\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u0441\u0435 \u043c\u043e\u0438 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0443\u0432\u044f\u0437\u0430\u043d\u044b \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0438 \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043c\u043e\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0434\u0430, \u0430 \u0442\u0430\u043a \u043f\u0443\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0445\u043e\u0442\u044c \u0432 nt \u0445\u043e\u0442\u044c \u0432 posix \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 <\/p>\n<h3>\u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 &#8212; \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c<\/h3>\n<p>\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u043e ssh, \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e tacacs \u0438\u043b\u0438 radius \u0443\u0447\u0435\u0442\u043a\u0430<\/p>\n<p>user: gAAAAABn7NmekcfGhIjrwJRXL6v0QRm3SAz4dz-GSm16gu7dpBIyw5omo-A1d3-LjaNwPwTN6Vg-1jzW5_0aPeFbwe0p6TZtsQ==<br \/>password: gAAAAABn7Nme6Kb4cI-sqsyApPFm2JsqLtp-<br \/> 2Hds7Jov8MY50XBx3s1VKOIXgA3FKjIa_FjpqkbdDsG6bWwzobwhw9SOrSwHOA==<\/p>\n<p>\u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0430 \u043f\u043e\u0442\u043e\u043c \u0448\u0438\u0444\u0440\u0443\u0435\u0442\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f CLI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u043e\u0434\u0443\u043b\u044f <a href=\"https:\/\/github.com\/astaraiki\/astarconf\" rel=\"noopener noreferrer nofollow\"><strong>astarconf<\/strong><\/a><\/p>\n<h3>\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0432\u044b\u0445 \u043e\u043a\u0442\u0435\u0442\u043e\u0432 mac \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432<\/h3>\n<p>phone_mac:<\/p>\n<ul>\n<li>\n<p>805e<\/p>\n<\/li>\n<li>\n<p>001a <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432 \u0441\u0435\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u043f\u043e\u0440\u0442 \u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0435 \u044d\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 mac \u0430\u0434\u0440\u0435\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 &#171;\u0441\u0432\u0435\u0442\u044f\u0442\u0441\u044f&#187; \u043d\u0430 \u043f\u043e\u0440\u0442\u0443, \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u043c. \u0422\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0440\u0435\u043d\u0434\u043e\u0432 IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0432 \u0441\u0435\u0442\u0438 \u043d\u0435 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438 \u0443 \u0432\u0441\u0435\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0440\u0435\u043d\u0434\u0430 mac \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a<\/p>\n<\/li>\n<\/ul>\n<h3>templpath: ~\/astarmiko\/TEMPLATES\/<\/h3>\n<p>\u041f\u0443\u0442\u044c, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f textFSM \u0448\u0430\u0431\u043b\u043e\u043d\u044b<\/p>\n<h3>dict_of_cmd: ~\/astarmiko\/YAML\/commands.yaml<\/h3>\n<p>\u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/YAML\/commands.yaml\" rel=\"noopener noreferrer nofollow\">commands.yaml<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435, \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0418\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043d\u0438\u0445 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u044b textFSM <br \/>(\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 &#8212; \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0441\u0432\u043e\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u044c\u0442\u0435\u0441\u044c \u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 textFSM  \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f)<\/p>\n<h3>logging: True\/False<\/h3>\n<p>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u043e\u0433\u043e\u0432<\/p>\n<h3>logfile: \/some_path\/astarmiko.log<\/h3>\n<p>\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043b\u043e\u0433 \u0444\u0430\u0439\u043b\u0430<\/p>\n<h3>loglevel: INFO\/WARNING\/DEBUG etc<\/h3>\n<p>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0430<\/p>\n<h3>log_format_str:<\/h3>\n<p>\u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u043b\u043e\u0433\u0430, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u0442 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0433\u043e<\/p>\n<h3>add_account: (\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043a\u0438)<\/h3>\n<p>\u0412 \u043b\u044e\u0431\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 \u0431\u044b\u0432\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0433\u0434\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c tacacs \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435 \u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u0447\u0435\u0442\u043a\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c. \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u0437 <strong><em>astarmiko<\/em><\/strong> \u043f\u0440\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0443\u0447\u0435\u0442\u043a\u043e\u0439, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0440\u043d\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435<br \/> \u0423\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0448\u0438\u0444\u0440\u0443\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0434\u0443\u043b\u044f <a href=\"https:\/\/github.com\/astaraiki\/astarconf\" rel=\"noopener noreferrer nofollow\"><strong>astarconf<\/strong><\/a><\/p>\n<ul>\n<li>\n<p>password: gAAAAABoB1JEZiWkUNiaXAs-ItSPTUrPyBCP4jyZBLWF0P9SGahWSD5ZWNK9QFxCbkPCnPFdqmigVQx8vmrMAbkz09mJRNH7HA== <br \/>user: gAAAAABoB1JEHSOPYy3-0SAUhGgzlRnXTf56-1frsFs9d2CRYuwqRtfAQRgZYF0ohraFCN74IaR1P3Zdr1BONnNZVAa8d9Yyvw==<\/p>\n<\/li>\n<li>\n<p>password: gAAAAABoB1JEUFWn9R_rx-MaZ7QFyPiVK5mh4VgHZmpiAcTLV8EZ3QM99gK8ZVkjAqSXnOjGGOGSL3SU0e85Pcc9f33BQ-Q4og== <br \/>user: gAAAAABoB1JE-WO-0EEjVG7-mmK1fSMGEzRaCdVxW1WW81ZBSFzxkYmMT1PvWevC7RI9Ey6b-xiv4hGLXq0wFrWifTYwDNRxgg==<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h3>\u0412\u044b\u0448\u0435\u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0439 commands.yaml:<\/h3>\n<p>\u0412 \u0441\u0432\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043b\u044e\u0431\u043e\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0447\u0430\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 arp, \u043e\u0431\u0449\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 mac \u0430\u0434\u0440\u0435\u0441\u043e\u0432, mac \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 IP \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u0442.\u043f.<\/p>\n<p>\u0441\u0430\u043c\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 astarmiko \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445, \u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0432 <strong><em>command.yaml <\/em><\/strong>\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 <strong><em>\u043c\u0435\u0436\u0434\u0443 \u0441\u043c\u044b\u0441\u043b\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0435\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0431\u0440\u0435\u043d\u0434\u0430<\/em><\/strong><\/p>\n<p>\u0442\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong><em>mac_delimeters<\/em><\/strong> &#8212; \u043f\u043e \u0441\u0443\u0442\u0438 \u0441\u0442\u0438\u043b\u044c \u0432\u044b\u0432\u043e\u0434\u0430 (\u0438 \u0432\u0432\u043e\u0434\u0430) mac \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0442 \u0431\u0440\u0435\u043d\u0434\u0430 \u043a \u0431\u0440\u0435\u043d\u0434\u0443 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u043f\u0438\u0441\u0438 6 \u043f\u043e 2 \u0438\u043b\u0438 3 \u043f\u043e 4 \u043d\u043e \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0442\u043e\u0447\u043a\u0430 \u0438\u043b\u0438 \u0442\u0438\u0440\u0435 \u0438\u043b\u0438 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 &#8212; \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u0442\u0443 \u0441\u0432\u0435\u0442\u0438\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 mac address \u0438\u043b\u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e mac \u0430\u0434\u0440\u0435\u0441\u043e\u0432 &#171;\u0441\u0432\u0435\u0442\u0438\u0442\u0441\u044f&#187; \u0437\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u043f\u043e\u0440\u0442\u043e\u043c. \u041d\u0435 \u043b\u0435\u043d\u0438\u0442\u0435\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <strong>desc<\/strong>(ription) &#8212; \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c<\/p>\n<p><code>\"<strong>mac_addr_tbl_by<\/strong>\":<br \/> desc: 'show mac addres table and filter by mac'<br \/> cisco_ios: 'show mac address-table | in {}'<br \/> huawei: 'display mac-address | in {}'<br \/> huawei_vrpv8: 'display mac-address | in {}'<br \/> eltex: 'show mac address-table | in {}'<br \/> \"<strong>mac_addr_tbl_byport<\/strong>\":<br \/> desc: 'show mac addres table on defined port'<br \/> cisco_ios: 'show mac address-table interface {}'<br \/> huawei: 'display mac-address {}'<br \/> huawei_vrpv8: 'display mac-address interface {}'<br \/> eltex: 'show mac address-table | in {}'<\/code><\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0432\u043e\u0442 \u0447\u0442\u043e \u044f \u043d\u0430\u0437\u044b\u0432\u0430\u044e <strong><em>\u043f\u043b\u043e\u0445\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c<\/em><\/strong> &#8212; \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u043b\u0438\u043d\u0435\u0435\u043a \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u043e\u0432 Huawei  \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u043e\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b &#171;\u043f\u043e\u043a\u0430\u0436\u0438 \u043c\u0430\u043a-\u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435&#187;<\/p>\n<p>\u042d\u0442\u0438 \u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 &#8212; <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/YAML\/activka_byname.yaml\" rel=\"noopener noreferrer nofollow\"><strong><em>activka_byname.yaml<\/em><\/strong><\/a>, <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/YAML\/commands.yaml\" rel=\"noopener noreferrer nofollow\"><strong><em>commands.yaml<\/em><\/strong><\/a>, <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/YAML\/astarmiko.yaml\" rel=\"noopener noreferrer nofollow\"><strong><em>astarmiko.yaml<\/em><\/strong><\/a> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 astarmiko<br \/> <strong><em>commands.yaml<\/em><\/strong>, <strong><em>astarmiko.yaml<\/em><\/strong> \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/tree\/main\/astarmiko\/YAML\" rel=\"noopener noreferrer nofollow\">github<\/a><br \/> <strong><em>activka_byname.yaml<\/em><\/strong> \u0435\u0441\u0442\u044c \u0442\u0430\u043c \u0436\u0435 \u0432 \u0432\u0438\u0434\u0435 &#171;\u0431\u043e\u043b\u0432\u0430\u043d\u043a\u0438&#187;. \u0421\u0430\u043c \u044f \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0438\u0437 exel&#8217;\u0435\u0432\u0441\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443 \u043c\u0435\u043d\u044f \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u0441\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438, \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 \u0438 \u0442.\u043f. &#8212; \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432, \u0432\u044b\u0432\u0435\u043b \u0432 CSV \u0438 \u043d\u0430 \u0441\u043a\u043e\u0440\u0443\u044e \u0440\u0443\u043a\u0443 \u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u0435 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e CSV \u0441\u043e\u0437\u0434\u0430\u043b yaml \u0444\u0430\u0439\u043b<\/p>\n<p>\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043d\u0430 github \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/tree\/main\/astarmiko\/DOCUMENTATION\" rel=\"noopener noreferrer nofollow\">DOCUMENTATION<\/a> \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u0438 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0430\u0445, \u0437\u0434\u0435\u0441\u044c \u043a\u0440\u0430\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0438\u0437 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/base.py\" rel=\"noopener noreferrer nofollow\">astarmiko\/<\/a><a href=\"http:\/\/base.py\" rel=\"noopener noreferrer nofollow\">base.py<\/a><\/p>\n<h3>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c astarmiko\/base.py<\/h3>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043b\u0430\u0441\u0441\u044b Activka (\u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f) \u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u0439 \u0435\u043c\u0443 ActivkaBackup (\u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u0431\u044d\u043a\u0430\u043f\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f)<\/p>\n<details class=\"spoiler\">\n<summary>Activka functions:<\/summary>\n<div class=\"spoiler__content\">\n<h3>choose(device, withoutname = False)<\/h3>\n<p>\u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 netmiko \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441 ConnectHandler(**device), \u0433\u0434\u0435 device &#8212; \u0438\u043c\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u0438\u0437 activka_byname.yaml) \u0430 withoutname &#8212; \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440 \u0432\u044b\u0431\u043e\u0440\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044f {dictionary for conect} if False (default) \u0438\u043b\u0438   {device_name:{dictionary for conect}} if True<\/p>\n<h3>filter(device_type = None, levels = None, segment = None)<\/h3>\n<p>\u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u0437 activka_byname.yaml \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043f\u043e \u0442\u0440\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c<\/p>\n<ul>\n<li>\n<p>device_type &#8212; \u0442\u0438\u043f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 netmiko<\/p>\n<\/li>\n<li>\n<p>levels &#8212; &#8216;R&#8217; &#8212; router &#8216;L3&#8217; &#8212; L3 swith &#8216;L2&#8217; &#8212; L2 switch<\/p>\n<\/li>\n<li>\n<p>segment &#8212; \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0441\u0435\u0442\u0438 (\u0441\u043c. <strong>activka_byname_<\/strong><a href=\"http:\/\/ru.md\" rel=\"noopener noreferrer nofollow\"><strong>ru.md<\/strong><\/a>)<\/p>\n<\/li>\n<\/ul>\n<h3>setconfig, getinfo, get_curr_config, list_of_all_ip_intf<\/h3>\n<p>\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (show commands), \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 IP \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432<\/p>\n<h3>setconfig_on_devices, execute_on_devices<\/h3>\n<p>\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (show commands)<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>ActivkaBackup functions:<\/summary>\n<div class=\"spoiler__content\">\n<p>(\u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0435\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0422\u0417 &#8212; \u0431\u044d\u043a\u0430\u043f \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432)<\/p>\n<h3>setupbackup_servers<\/h3>\n<p>\u042f \u0438\u043c\u0435\u044e 2 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f (<strong>main &amp; second<\/strong>) \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u043a\u0440\u0438\u043f\u0442 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 main server \u043f\u043e cron&#8217;\u0443 \u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 main  &#8212; \u044d\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0443 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u041e\u0421 <br \/>\u0438\u043b\u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0442\u0430\u043d\u0446\u0438\u0438, \u0438 \u0442\u043e\u0433\u0434\u0430 main server \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 second \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437<br \/> <strong><em>setup<\/em>protocol_handlers<\/strong><\/p>\n<h3>compare_configs( device: str, ignore_lines: List[str] = None) -&gt; Dict[str, Any]<\/h3>\n<p>\u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435  \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f<\/p>\n<h3>get_backup_config, write_backup<\/h3>\n<p>\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0444\u0430\u0439\u043b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u043d\u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u0430 \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u0430\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f _<em>get<\/em>backup_config_local, _<em>get<\/em>backup_config_ftp, _<em>write<\/em>backup_local, _<em>write<\/em>backup_ftp \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043c\u0435\u0441\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043d\u0435 \u043a\u043b\u0430\u0441\u0441\u0430<\/summary>\n<div class=\"spoiler__content\">\n<h3>setup_logging<\/h3>\n<p>\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0443\u0440\u043e\u0432\u043d\u044f,  \u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430  \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<h3>setup_config<\/h3>\n<p>\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YAML<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e &#8212; \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0438\u043c\u0435\u043d\u0430 \u0438 \u043f\u0430\u0440\u043e\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043b\u043e\u0433\u043e\u0432, \u0432\u044b\u0431\u043e\u0440 \u044f\u0437\u044b\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0443 \u0432\u0430\u0441 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 Activka \u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435, \u044f \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u0435\u043b\u0430\u044e \u0442\u0430\u043a:<br \/> \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435<br \/> <code>from astarmiko.base import (<\/code><br \/> <code>Activka,<\/code><br \/> <code>port_name_normalize,<\/code><br \/> <code>convert_mac,<\/code><br \/> <code>is_ip_correct,<\/code><br \/> <code>nslookup,<\/code><br \/> <code>setup_config,<\/code><br \/> <code>snmp_get_oid,<\/code><br \/> <code>)<\/code><br \/> \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u0432 main() \u043a\u0430\u043a\u0438\u043c \u043b\u0438\u0431\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0430\u044e \u043a\u0430\u043a \u0437\u043e\u0432\u0443\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0444\u0430\u0439\u043b (\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 FindHost) \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 Activka \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0443\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f <code>setup_config(config_path):<\/code><\/p>\n<p><code>path_to_cfg = os.path.abspath(os.path.join(base_dir, f\"{file_name}.yaml\"))<\/code><br \/><code> if os.path.exists(path_to_cfg):<\/code><br \/>      <code>  setup_config(path_to_cfg)<\/code><br \/> <code> else:<\/code><br \/> <code>config_path = os.path.expanduser(\"~\/astarmiko\/fh.yaml\")<\/code><br \/> <code>if os.path.exists(config_path):<\/code><br \/> <code> setup_config(config_path)<\/code><br \/> <code>else:<\/code><br \/> <code> print(\"The fh (findhost)requires a configuration file fh.yaml either in the same folder as <\/code><a href=\"http:\/\/fh.py\" rel=\"noopener noreferrer nofollow\"><code>fh.py<\/code><\/a><code> or in ~\/astarmiko\/YAML\/\")<\/code><br \/> <code> sys.exit()<\/code><\/p>\n<p>\u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 ac = Astarconf() \u0441\u043c\u043e\u0442\u0440\u0438 \u043c\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e  <a href=\"https:\/\/habr.com\/ru\/articles\/903902\/\" rel=\"noopener noreferrer nofollow\"><strong><em>Yast Another Config Manipulation \u0438\u043b\u0438 \u0437\u0430\u0447\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434?<\/em><\/strong><\/a><\/p>\n<h3>snmp_get_oid<\/h3>\n<p>\u0412\u0438\u0434\u0438\u043c\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 snmpget \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u0435\u0434\u0443 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0430 \u043f\u043e\u043a\u0430 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u0435\u0441\u044c astarmiko \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 ssh \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e, \u0430 \u0432 \u043c\u043e\u0435\u0439 \u0441\u0435\u0442\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0444\u0430\u0439\u0435\u0440\u0432\u043e\u043b\u044b \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0430 \u041a\u043e\u043d\u0442\u0438\u043d\u0435\u043d\u0442-4, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e CLI \u043d\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0435\u0442\u0438 \u0438 arp \u0438 mac-address \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e ssh \u0441 \u043d\u0438\u0445 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0448\u044c, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e snmp<\/p>\n<h3>send_commands<\/h3>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0430\u043a\u0442\u0438\u0432\u043a\u043e\u0439. \u0414\u0432\u0430 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b &#8212; exec_mode \u0438 config_mode. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 _<em>try<\/em>connect() \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u0443\u0447\u0435\u0442\u043e\u043a \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/p>\n<h3>port_name_normalize<\/h3>\n<p>\u041f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432\u044b\u0437\u0432\u0430\u043d\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 Huawei \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0432\u043e\u0434 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Huawei, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u043a\u0430\u043a GE0\/0\/1 \u0430 \u043f\u0440\u0438 \u0432\u0432\u043e\u0434\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 \u043d\u0430\u0434\u043e \u043f\u0438\u0441\u0430\u0442\u044c GI0\/0\/1<\/p>\n<h3>get_port_by_mac<\/h3>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0449\u0435\u0442 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u0442\u0443 &#171;\u0441\u0432\u0435\u0442\u0438\u0442\u0441\u044f&#187; \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c mac-address \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442  \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c (\u0437\u0430 \u043d\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438\u043b\u0438 \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0441 IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u043c), \u0438\u043b\u0438 \u0436\u0435 \u043a \u043f\u043e\u0440\u0442\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440<\/p>\n<h3>convert_mac<\/h3>\n<p>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0440\u044d\u043d\u0434\u0430 (\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0438\u0439 ARP \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435) \u0430 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440 \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0431\u0440\u0435\u043d\u0434\u0430, \u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u043d\u0435\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e mac \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e mac \u0430\u0434\u0440\u0435\u0441 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<p>\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u043d\u0430\u0435\u0442 \u043a \u043a\u0430\u043a\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c mac-address \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 device_type \u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0430\u0434\u0440\u0435\u0441\u0430, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u043c \u043a \u044d\u0442\u043e\u043c\u0443 device_type<\/p>\n<h3>del_exeption<\/h3>\n<p>\u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430\u0445 \u0444\u0438\u0440\u043c\u044b Cisco \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u0438\u0434\u0430 &#8216;ntp clock-period <em>SOME-NUMBER<\/em>&#8216; \u0433\u0434\u0435 <em>SOME-NUMBER<\/em>&#8216; \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u0447\u0442\u043e \u043e\u043d\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b, \u0445\u043e\u0442\u044f \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0431\u044d\u043a\u0430\u043f\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f (\u0438\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f) \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0432\u0438\u0434\u0430<br \/> <code>{<\/code><br \/> <code>ignore_list:<\/code><br \/> <code>\\- \"some_ignore_lines\"<\/code><br \/> <code>\\- \"another_some_ignore_lines\"<\/code><br \/> <code>}<\/code><\/p>\n<h3>templatizator<\/h3>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u0430\u043a\u043e\u0439 \u043b\u0438\u0431\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e textFSM template.<br \/> \u041c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u0442\u043e\u0433\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e device_type, \u0432\u044b\u0432\u043e\u0434 \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b (\u0441\u043c. <a href=\"http:\/\/commands.md\" rel=\"noopener noreferrer nofollow\"><strong><em>commands.md<\/em><\/strong><\/a> \u0438 <a href=\"https:\/\/astarmiko\/YAML\/commands.yaml\" rel=\"noopener noreferrer nofollow\"><strong><em>commands.yaml<\/em><\/strong><\/a>) \u0438\u043b\u0438 \u0436\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0444\u043b\u0430\u0433 special = True (\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f, \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430) \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b<\/p>\n<\/div>\n<\/details>\n<hr\/>\n<h3>\u041f\u0420\u0418\u041c\u0415\u0420 \u0418\u0421\u041f\u041e\u041b\u042c\u0417\u041e\u0412\u0410\u041d\u0418\u042f<\/h3>\n<p>\u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u044f \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u0432 Windows &#8212; LiClipse, \u0432 Linux &#8212; vim), \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u044e \u043e\u0442\u043a\u0443\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c<\/p>\n<p><code>#!\/usr\/bin\/python3<\/code><br \/><code>#-*- coding: utf-8 -*-<\/code><br \/> <code>import re<\/code><br \/> <code>import yaml<\/code><br \/> <code>import argparse<\/code><br \/> <code>import asyncio<\/code><br \/> <code>import os<\/code><br \/> <code>import sys<\/code><br \/> <code>import subprocess<\/code><br \/> <code>from astarmiko.base import (<\/code><br \/>                                             <code>Activka,<\/code><br \/>                                             <code>port_name_normalize,<\/code><br \/>                                              <code>convert_mac,<\/code><br \/>                                              <code>is_ip_correct,<\/code><br \/>                                              <code>nslookup,<\/code><br \/>                                              <code>setup_config,<\/code><br \/>                                              <code>snmp_get_oid,<\/code><br \/>                                              <code>)<\/code><\/p>\n<p><code>setup_config(\"~\/astarmiko\/astarmiko.yaml\")<\/code><br \/> <code>ma = Activka(\"activka_byname.yaml\")<\/code><br \/> <code>from astarmiko.base import ac<\/code><\/p>\n<p>\u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 <strong><em>ma<\/em><\/strong> \u0438 <strong><em>ac<\/em><\/strong>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/p>\n<p>\u0423 \u043c\u0435\u043d\u044f \u0432\u0441\u0435 \u0440\u043e\u0443\u0442\u0435\u0440\u044b \u0432 <strong><em>activka_byname.yaml<\/em><\/strong> \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e \u0438\u0445 <strong>Looppack0 IP<\/strong> (\u043d\u0443 \u044d\u0442\u043e \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e), \u0430 \u0434\u0435\u0441\u043a\u0440\u0438\u043f\u0448\u0435\u043d \u043d\u0430 \u043b\u0443\u043f\u0431\u044d\u043a\u0430\u0445 \u043f\u0440\u043e\u0441\u0442\u043e <code>description router_id<\/code> \u0430 \u043c\u043d\u0435 \u0432\u0434\u0440\u0443\u0433 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c <code>description router_id ip_address_of_this_interface<\/code><\/p>\n<p>\u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0438\u0448\u0443:<\/p>\n<p><code>routers = ma.filter(levels='R')<\/code><br \/><code>with open(file, encoding=\"utf8\") as f:<\/code><br \/><code>    todo = <\/code><a href=\"http:\/\/yaml.safe\" rel=\"noopener noreferrer nofollow\"><code>yaml.safe<\/code><\/a><code>_load(f)<\/code><br \/><code>updated_todo = {vendor: [line if not line.startswith('description router-id') else f'{line}{{ma.choose[router][ip]}' for line in commands] for vendor, commands in todo.items() } <\/code><br \/><code>for router in routers:<\/code><br \/><code>    ma.send_command(router, updated_todo[ma.device_type], mode=\"config\") <\/code><\/p>\n<p>\u0434\u0435\u043b\u0430\u0435\u043c \u0444\u0430\u0439\u043b <strong>file<\/strong>:<\/p>\n<p>`{&#8216;cisco&#8217;:<br \/>  &#8212; &#8216;interface loopback 0&#8217;<br \/>  &#8212; &#8216;description router-id &#8216;<br \/>&#8216;huawei&#8217;:<br \/>  &#8212; &#8216;interface loopback 0&#8217;<br \/>  &#8212; &#8216;description router-id &#8216;<br \/>&#8216;eltex&#8217;:<br \/>  &#8212; &#8216;interface loopback 0&#8217;<br \/>  &#8212; &#8216;description router-id &#8216; }`<\/p>\n<p>\u0438 \u0432\u0443\u0430\u043b\u044f, \u043f\u043e \u0432\u0441\u0435\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c, \u043f\u0440\u0438\u0447\u0435\u043c \u044d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0442\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u0430 \u043d\u0430 \u0432\u0441\u0435\u0445 \u043c\u043e\u0438\u0445 \u0431\u0440\u0435\u043d\u0434\u0430\u0445, \u043d\u043e \u0432\u0435\u0434\u044c \u043c\u043e\u0433\u0443\u0442 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0439<\/p>\n<hr\/>\n<h3>\u0415\u0449\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b. \u041f\u0440\u044f\u043c\u043e \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u043c\u043e\u0434\u0443\u043b\u044f astarmiko \u0432\u0445\u043e\u0434\u044f\u0442 \u0434\u0432\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430:<\/h3>\n<ul>\n<li>\n<p><code>scripts\/<\/code><a href=\"http:\/\/fh.py\" rel=\"noopener noreferrer nofollow\"><code>fh.py<\/code><\/a>\u00a0\u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 FindHost: \u043f\u043e\u0438\u0441\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e IP \u0438\u043b\u0438 MAC (\u0441 \u043d\u0435\u0435 \u0442\u043e \u0432\u0441\u0435 \u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c)<\/p>\n<\/li>\n<li>\n<p><code>scripts\/<\/code><a href=\"http:\/\/acm.py\" rel=\"noopener noreferrer nofollow\"><code>acm.py<\/code><\/a>\u00a0\u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 ACtivkaManagment: CLI \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<\/li>\n<\/ul>\n<h4>\u0414\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0439 fh.py<\/h4>\n<p>\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b <a href=\"https:\/\/astarmiko\/YAML\/networks_byip.yaml\" rel=\"noopener noreferrer nofollow\"><strong><em>networks_byip.yaml<\/em><\/strong><\/a>  &#8212; \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0432\u0438\u0434\u0430<br \/> {3rd_octet: Router_Name}<\/p>\n<p>\u0414\u043b\u044f \u0441\u0435\u0431\u044f \u044f \u0438\u0441\u0445\u043e\u0436\u0443 \u0438\u0437 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0430 \u0437\u043d\u0430\u043d\u0438\u0435) \u0447\u0442\u043e \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e  \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044e \u0441\u0435\u0442\u044f\u043c\u0438 \u0441 \u043c\u0430\u0441\u043a\u043e\u0439 \/24, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043b\u043e\u043a\u0430\u0446\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0438 \u0442\u0430\u043c \u043c\u043d\u043e\u0433\u043e VLAN &#8212; \u0432\u0441\u0435 \u043e\u043d\u0438 \u0441 \u043c\u0430\u0441\u043a\u043e\u0439 \/24 \u0438\u043b\u0438 \/23<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0433\u0434\u0435 \u0442\u043e ( \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0430\u0448\u0435\u0439 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0438 \u0442.\u043f.) \u0441\u0435\u0442\u044c \u0441 \u043c\u0430\u0441\u043a\u043e\u0439 \/24 \u043f\u043e\u0431\u0438\u0442\u0430 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043b\u043a\u0438\u0435, \u0432\u0441\u0435 \u043e\u043d\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u043d\u043e\u043c (\u0438\u043b\u0438 \u0434\u0432\u0443\u0445 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 VRRP) \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0435 (L3 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0435). \u041f\u043e\u043b\u0443\u0447\u0438\u043b \u044d\u0442\u043e\u0442 yaml \u0444\u0430\u0439\u043b \u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0432\u043e\u0435\u0433\u043e astarmiko, \u043f\u0440\u043e\u0439\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c &#8216;R&#8217; (\u0444\u0443\u043d\u043a\u0446\u0438\u044f <strong><em>ma.list_of_all_ip_intf<\/em><\/strong> \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0434\u0438 \u044d\u0442\u043e\u0433\u043e \u0445\u043e\u0442\u044f \u043e\u043d\u0430 \u0438  \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 <strong><em>ma.send_commands()<\/em><\/strong> \u0438 <strong>ma.getinfo()<\/strong>)<\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 fh \u0441\u0430\u043c\u0430 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u043c\u0435\u043d\u044f:<\/p>\n<p><code><strong>fh<\/strong><\/code><br \/> <code>usage: fh [-h] [-s SEG] [-r REPEAT] [-f FILE_TO_SAVE] ip<\/code><br \/> <code>fh: error: the following arguments are required: ip<\/code><\/p>\n<p><code><strong>fh -h<\/strong><\/code><br \/> <code>usage: fh [-h] [-s SEG] [-r REPEAT] [-f FILE_TO_SAVE] ip<\/code><\/p>\n<p><code>\u041f\u043e\u0438\u0441\u043a \u0445\u043e\u0441\u0442\u0430 \u043f\u043e IP\/MAC\/\u0438\u043c\u0435\u043d\u0438<\/code><\/p>\n<p><code>positional arguments:<\/code><br \/> <code>ip               IP \u0438\u043b\u0438 MAC \u0430\u0434\u0440\u0435\u0441 \u0445\u043e\u0441\u0442\u0430 \u0438\u043b\u0438 \u0438\u043c\u044f \u0431\u0435\u0437 \u0434\u043e\u043c\u0435\u043d\u0430<\/code><\/p>\n<p><code>optional arguments:<\/code><br \/> <code>-h, --help       show this help message and exit<\/code><br \/> <code>-s SEG           \u0418\u043c\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0441\u0435\u0442\u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 active_by_name.yaml \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0434\u0438\u0442\u0435 q \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435<\/code><br \/> <code>\u0432\u0432\u043e\u0434\u0430 MAC \u0430\u0434\u0440\u0435\u0441\u0430<\/code><br \/> <code>-r REPEAT        \u0418\u0441\u043a\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043f\u0440\u043e\u0441\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432 True<\/code><br \/> <code>-f FILE_TO_SAVE  \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b<\/code><\/p>\n<h4>acm.py<\/h4>\n<p>\u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e\u0439 \u0432\u043e\u0434\u044b \u043f\u043e\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435 ChatGPT, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f \u0434\u043e\u0432\u043e\u0434\u0438\u043b \u0434\u043e \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0430 \u0443\u0436\u0435 5 \u043b\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434  \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u043c\u043d\u0435 &#8212; \u0430 \u0434\u0430\u0432\u0430\u0439 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c CLI \u043a \u0442\u0432\u043e\u0435\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e, \u0438 \u044f \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u043b\u0441\u044f.<\/p>\n<p>\u041e\u043d \u0435\u0449\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b RESTfull API \u0441\u043e\u0437\u0434\u0430\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u044b\u0448\u043a\u043e\u0439 (if you want) \u043d\u043e \u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f, \u043c\u043d\u0435 \u043d\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e<\/p>\n<p><strong>acm \u0442\u043e\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442 \u0441\u0430\u043c \u0437\u0430 \u0441\u0435\u0431\u044f<\/strong>:<br \/> `<strong>acm &#8212;help<\/strong><br \/><code> usage: acm [-h] --device DEVICE [DEVICE ...] [--cmd CMD] [--cmd-file CMD_FILE] [--conf CONF] [--rsyslog] [--loki] [--elastic]<br \/> {show,set}<\/code><\/p>\n<p><code>AstarMiko Async CLI<\/code><\/p>\n<p><code>positional arguments:<br \/> {show,set}            Operation to perform<\/code><\/p>\n<p><code>optional arguments:<br \/> -h, --help            show this help message and exit<br \/> --device DEVICE [DEVICE ...]<br \/> Device name(s)<br \/> --cmd CMD             Command as string or JSON<br \/> --cmd-file CMD_FILE   Path to file with commands in JSON or txt format<br \/> --conf CONF           Config file path<br \/> --rsyslog<br \/> --loki<br \/> --elastic`<\/code><\/p>\n<p>\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 IP \u0432 decription loopback 0 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u043f\u0438\u0442\u043e\u043d\u0435, \u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c (\u0432\u044b\u0432\u043e\u0434 \u0448\u0443\u043c\u043d\u044b\u0439, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 logging):<\/p>\n<p>`<strong><em>acm &#8212;device KUKU-AR6280-2 &#8212;cmd-file &#171;\/root\/loop.txt&#187; set<\/em><\/strong><br \/> DEBUG:   commands = [&#8216;interface LoopBack0&#8217;, &#8216;description router_id 10.200.140.9&#8217;]<br \/> Executing config commands:   0%|                                                                                   | 0\/1Connecting to 10.22.240.9&#8230;<br \/> {&#171;time&#187;: &#171;2025-06-16 11:45:17,895&#187;, &#171;level&#187;: &#171;INFO&#187;, &#171;message&#187;: &#171;Connecting to 10.200.140.9&#8230;&#187;}<br \/> {&#171;time&#187;: &#171;2025-06-16 11:45:18,002&#187;, &#171;level&#187;: &#171;INFO&#187;, &#171;message&#187;: &#171;Connected (version 2.0, client HUAWEI-1.5)&#187;}<br \/> {&#171;time&#187;: &#171;2025-06-16 11:45:19,565&#187;, &#171;level&#187;: &#171;INFO&#187;, &#171;message&#187;: &#171;Authentication (password) successful!&#187;}<br \/> {&#171;time&#187;: &#171;2025-06-16 11:45:35,823&#187;, &#171;level&#187;: &#171;INFO&#187;, &#171;message&#187;: &#171;{&#171;device&#187;: &#171;kuku-ar6280-2&#187;, &#171;level&#187;: &#171;INFO&#187;, &#171;message&#187;: &#171;Connecting to 10.200.140.9&#8243;}&#187;}<br \/> {&#171;time&#187;: &#171;2025-06-16 11:45:35,823&#187;, &#171;level&#187;: &#171;INFO&#187;, &#171;message&#187;: &#171;{&#171;device&#187;: &#171;kuku-ar6280-2&#187;, &#171;level&#187;: &#171;INFO&#187;, &#171;message&#187;: &#171;Commands are successfully executed&#187;}&#187;}<br \/> Executing config commands: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 1\/1 [00:22&lt;00:00, 22.16s\/it]<br \/> {<br \/> &#171;success&#187;: {<br \/> &#171;kuku-ar6280-2&#187;: &#171;system-view\\nEnter system view, return user view with Ctrl+Z.\\n[kuku-AR6280-2]interface LoopBack0\\n[kuku-AR6280-2-LoopBack0]description router_id 10.200.140.9\\n[nes-AR6280-2-LoopBack0]                        ^\\nError: Unrecognized command found at &#8216;^&#8217; position.&#187;<br \/> },<br \/> &#171;failed&#187;: {},<br \/> &#171;unreachable&#187;: []<br \/> }<\/p>\n<p>\u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u044f\u043a\u043e\u0431\u044b \u043e\u0448\u0438\u0431\u043a\u0443, netmiko \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 return, \u043d\u0430 \u044d\u0442\u043e huawei \u0438 \u0440\u0443\u0433\u0430\u0435\u0442\u0441\u044f, \u043d\u043e set config \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \ud83d\ude42<\/p>\n<p>\u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f bash \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c python \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e acm, grep, awk \u0438 \u0442.\u043f \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u0443, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433<\/p>\n<hr\/>\n<h4>\u041d\u0430 github \u0432 astaraiki\/astarmiko\/example<\/h4>\n<p>\u043b\u0435\u0436\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 &#8212;  <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/example\/config_backup.py\" rel=\"noopener noreferrer nofollow\">config_<\/a><a href=\"http:\/\/backup.py\" rel=\"noopener noreferrer nofollow\">backup.py<\/a><\/p>\n<p>\u042f \u0435\u0433\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u044e \u043e\u043a\u043e\u043b\u043e 5 \u043b\u0435\u0442 \u0438 \u043e\u043d \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <strong><em>SEG_A, SEG_B<\/em><\/strong> \u0438 \u0442.\u0434. \u0431\u044d\u043a\u0430\u043f\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 <strong>DevName-YYYYMMDD<\/strong>, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e \u043a\u0440\u043e\u043d\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0435\u0447\u0435\u0440, \u043d\u043e \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0434\u043d\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c<\/p>\n<p>\u041c\u043e\u0439 ActivkaBackup \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0438 \u043f\u043e ftp<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0432\u0435\u0442\u043a\u0430 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/tree\/variant2\" rel=\"noopener noreferrer nofollow\"><strong><em>variant2<\/em><\/strong><\/a><br \/>\u0418 \u0432\u043e\u0442 \u0442\u0430\u043c \u0432 astarmiko\/<a href=\"http:\/\/base.py\" rel=\"noopener noreferrer nofollow\">base.py<\/a> \u043a\u043b\u0430\u0441\u0441 ActivkaBackup \u0441 \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u044f\u043c\u0438 AI \u0438 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043f\u043e scp \u0438 \u043f\u043e sftp, \u043d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0438 \u043d\u0435 \u0445\u043e\u0447\u0443, \u044f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e, \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u0433\u043e\u0434\u0430\u043c\u0438 \u043a\u043e\u0434<\/p>\n<p>P.S.<br \/>\u0412\u044b \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0441\u043a\u0430\u0436\u0435\u0442\u0435 &#8212; \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u043a\u0442\u0438\u0432\u043a\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043b\u044e\u0434\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 ansible, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0442 \u0432 netbox \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043a\u043e\u043c\u0438\u043b\u044c\u0444\u043e. \u0418 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0412\u044b \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043f\u0440\u0430\u0432\u044b<\/p>\n<p>\u041d\u041e! \u043a\u0442\u043e \u0441\u043a\u0430\u0437\u0430\u043b \u0447\u0442\u043e \u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \ud83d\ude42 ?<\/p>\n<p>\u0438\u043b\u0438 \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 &#8212; \u043a\u043e\u0433\u0434\u0430 \u0442\u044b \u0430\u0434\u043c\u0438\u043d \u0444\u0438\u043b\u0438\u0430\u043b\u0430 \u0433\u0434\u0435 \u043d\u0430\u0434 \u0442\u043e\u0431\u043e\u0439 \u0432 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u043e\u0440\u0435 \u043f\u043e \u0442\u0432\u043e\u0438\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a 6-7, \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430 \u0441\u0432\u043e\u0435, \u0430 \u0442\u044b \u0441 \u0441 \u0435\u0449\u0435 \u0434\u0432\u0443\u043c\u044f \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0430\u043c\u0438 \u0437\u0430 \u0432\u0441\u0435 + \u0435\u0449\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 &#8212; \u0440\u0443\u043a\u0438 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u044f\u0442. \u042d\u0442\u0438\u043c \u043b\u0435\u0442\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0437\u043c\u0435 \u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c netbox, \u043d\u043e \u0447\u0435\u0440\u0435\u0437 3 \u043d\u0435\u0434\u0435\u043b\u0438 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u044f \u043f\u043e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0443 400 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u0432\u0438\u043d\u0434\u044b \u043d\u0430 \u043b\u0438\u043d\u0443\u043a\u0441 \u0438 \u0432\u0441\u0435, \u0437\u0430\u0431\u044b\u043b\u0438 \u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438&#8230;<\/p>\n<p>\u0418 \u043f\u043e\u0442\u043e\u043c, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u044b\u043b \u0443\u0447\u0435\u0431\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u0431\u044b\u0442\u044c<br \/>\u0438 &#8230;.<br \/><strong><em>pip(3) install astarmiko  <\/em><\/strong> <\/p>\n<p>\u0418 \u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f!<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/918800\/\"> https:\/\/habr.com\/ru\/articles\/918800\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442 Habr!<\/p>\n<p>\u042f \u0443\u0436\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0432\u043e\u044e \u0441\u0442\u0430\u0442\u044c\u044e  <a href=\"https:\/\/habr.com\/ru\/articles\/903902\/\" rel=\"noopener noreferrer nofollow\">Yast Another Config Manipulation \u0438\u043b\u0438 \u0437\u0430\u0447\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434?<\/a> \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438 \u043a\u043d\u0438\u0433\u0435 \u041d\u0430\u0442\u0430\u043b\u044c\u0438 \u0421\u0430\u043c\u043e\u0439\u043b\u0435\u043d\u043a\u043e\u00a0<a href=\"https:\/\/pyneng.readthedocs.io\/ru\/latest\/\" rel=\"noopener noreferrer nofollow\">Python \u0434\u043b\u044f\u00a0\u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432<\/a><\/p>\n<p>\u041d\u0430\u0447\u043d\u0443 \u0438 \u044d\u0442\u0443. \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0438 \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 Python &#8212; \u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u043a\u043d\u0438\u0433\u0438!<\/p>\n<p>\u0410 \u0435\u0449\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442  \u043c\u043e\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/\" rel=\"noopener noreferrer nofollow\"><strong>Astarmiko<\/strong><\/a>\u00a0\u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 Python-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0447\u0435\u0440\u0435\u0437 SSH, \u043a\u043e\u0442\u043e\u0440\u044b\u0439  \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0438\u0437 \u043a\u043d\u0438\u0433\u0438.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u043c\u043e\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u0431\u044b\u043b\u0430 \u0432\u0441\u044f \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c (\u043d\u0430\u0448\u0435\u0433\u043e \u0444\u0438\u043b\u0438\u0430\u043b\u0430), \u043c\u043d\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0441\u043a\u0443\u0447\u0438\u043b\u043e \u0438\u0433\u0440\u0430\u0442\u044c \u0432 &#171;\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0435&#187;.<\/p>\n<p>\u0427\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e netmiko:<\/p>\n<p> <code>{Router1: {<\/code><br \/>                        <code>device_type: cisco_ios,<\/code><br \/>                        <code>ip: some_ip_1,<\/code><br \/>                        <code>user: some_user,<\/code><br \/>                        <code>password: some_password<\/code><br \/><code>           }<\/code><br \/> <code>}<\/code><br \/>\u041f\u043e\u043d\u0438\u043c\u0430\u044f, \u0447\u0442\u043e \u0443\u0447\u0435\u0442\u043a\u0430 \u043d\u0430 tacacs&#8217;\u0435 \u0443 \u043c\u0435\u043d\u044f \u043e\u0434\u043d\u0430 &#8212; \u0432\u044b\u043a\u0438\u043d\u0443\u043b \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b <strong><em>user<\/em><\/strong> \u0438 <strong><em>password<\/em><\/strong><\/p>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u0434 \u043f\u0438\u0442\u043e\u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u043b \u0441\u0430\u043c \u0442\u0438\u043f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 &#8212; Router (R) \u0438\u043b\u0438 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440 \u0443\u0440\u043e\u0432\u043d\u044f L2 \u0438\u043b\u0438 L3. \u0415\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e &#171;\u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b&#187;&#8230;<\/p>\n<p><strong>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u043e\u0435 <em>\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0422\u0417<\/em> \u0437\u0432\u0443\u0447\u0430\u043b\u043e \u0442\u0430\u043a:<\/strong><br \/>\u0437\u0432\u043e\u043d\u0438\u0442 \u041c\u0430\u0440\u044c\u0412\u0430\u043d\u043d\u0430, \u0447\u0442\u043e-\u0442\u043e \u0441\u0435\u0442\u044c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0438 \u043d\u0430\u0434\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0432  \u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u0440\u0442, \u043a\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0430, \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0435\u0435 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440?<br \/><strong>\u0418 <em>\u0432\u0442\u043e\u0440\u043e\u0435 \u0422\u0417<\/em> \u0437\u0432\u0443\u0447\u0430\u043b\u043e<\/strong> &#8212; \u0447\u0442\u043e \u0442\u043e \u0441 \u043d\u0430\u0441\u043a\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c rancid \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c huawei, \u0430 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u044f \u0436\u0435 \u043f\u0438\u0442\u043e\u043d\u0438\u0441\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \ud83d\ude42 \u0434\u0430\u0432\u0430\u0439 \u0441\u0430\u043c \u043d\u0430\u043f\u0438\u0448\u0443 \u0431\u044d\u043a\u0430\u043f.<\/p>\n<p>\u0410 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u044b\u0448\u043b\u043e &#8212; \u0434\u043e\u0431\u0430\u0432\u044c \u0432 ACL \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 150 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 IP \u0430\u0434\u0440\u0435\u0441 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430 \u0441\u043b\u0443\u0436\u0431\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0438\u043b\u0438 \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0439 ACL \u043d\u0430 \u0432\u0441\u0435\u0445 \u0440\u043e\u0443\u0442\u0435\u0440\u0430\u0445 \u0438 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043d\u0435\u0442, \u0434\u043e\u0431\u0430\u0432\u044c. \u0410 \u0440\u043e\u0443\u0442\u0435\u0440\u044b \u0443 \u043d\u0430\u0441 \u0438 Cisco \u0438 Huawei \u0438 Eltex. \u0418\u043b\u0438 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0439 \u0431\u044d\u043a\u0430\u043f \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0432\u0441\u0435\u0439 \u0430\u043a\u0442\u0438\u0432\u043a\u0438 (\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f) \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e \u0434\u043d\u044f.<\/p>\n<p>\u0412 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e (\u0438 \u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e) \u0443\u0436\u0435 \u043b\u0435\u0442 5  \u0442\u0440\u0443\u0434\u0438\u0442\u0441\u044f \u043c\u043e\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/tree\/main\" rel=\"noopener noreferrer nofollow\"><strong><em>astarmiko<\/em><\/strong><\/a><\/p>\n<details class=\"spoiler\">\n<summary>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439, \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u043c \u043f\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u0438\u043c\u043e\u043b\u043e\u0433\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e <strong>paramiko<\/strong> &#8212; (\u043f\u0430\u0301\u0440\u0430\u043c\u0438\u043a\u043e) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u044f\u043f\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430\u00a0<strong>\u300c\u043f\u0430\u0440\u0430-\u043c\u0438\u043a\u043e\u300d<\/strong>\u00a0(\u043f\u0430\u0440\u0430\u0448\u044e\u0442\u0438\u0441\u0442 + \u5b50 \u00ab\u043a\u043e\u00bb \u2013 \u0441\u0443\u0444\u0444\u0438\u043a\u0441, \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0439 \u00ab\u0440\u0435\u0431\u0451\u043d\u043e\u043a\u00bb \u0438\u043b\u0438 \u00ab\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439\u00bb).<\/p>\n<ul>\n<li>\n<p><strong>\u0421\u043c\u044b\u0441\u043b<\/strong>: &#8212; <strong>\u300c\u30d1\u30e9\u300d (\u043f\u0430\u0440\u0430)<\/strong>\u00a0\u2013 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u00a0<em>&#171;\u043f\u0430\u0440\u0430\u0448\u044e\u0442&#187;<\/em>\u00a0(\u0430\u043d\u0433\u043b.\u00a0<em>parachute<\/em>), \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<em>&#171;parallel&#187;<\/em>\u00a0(\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439). &#8212; <strong>\u300c\u30df\u30b3\u300d (\u043c\u0438\u043a\u043e)<\/strong>\u00a0\u2013 \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u00ab\u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439\u00bb (\u043a\u0430\u043a \u0432\u00a0<em>&#171;\u0440\u0435\u0431\u0451\u043d\u043e\u043a&#187;<\/em>).<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u0434\u0435\u044f<\/strong>: \u0421\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0434\u0443\u043b\u044f (Jeff Forcier, 2003) \u0445\u043e\u0442\u0435\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u0434\u0435\u044e \u00ab\u043b\u0451\u0433\u043a\u043e\u0433\u043e\u00bb \u0438 \u00ab\u043f\u0440\u043e\u0432\u043e\u0440\u043d\u043e\u0433\u043e\u00bb SSH-\u043a\u043b\u0438\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u00a0<strong>Netmiko<\/strong>\u00a0\u2013 \u044d\u0442\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f\u00a0<strong>&#171;Net&#187;<\/strong>\u00a0(\u0441\u0435\u0442\u044c) \u0438\u00a0<strong>&#171;miko&#187;<\/strong>\u00a0(\u043e\u0442 Paramiko).<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043c\u044b\u0441\u043b<\/strong>: &#8212; <strong>&#171;Net&#187;<\/strong>\u00a0\u2013 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 (Cisco, Juniper \u0438 \u0434\u0440.). &#8212; <strong>&#171;miko&#187;<\/strong>\u00a0\u2013 \u043e\u0442\u0441\u044b\u043b\u043a\u0430 \u043a Paramiko, \u0442\u0430\u043a \u043a\u0430\u043a Netmiko \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u0434\u0435\u044f<\/strong>: \u0410\u0432\u0442\u043e\u0440 (Kirk Byers, 2014) \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u00a0<strong>&#171;\u0441\u0435\u0442\u0435\u0432\u043e\u0439 (Net) \u0432\u0430\u0440\u0438\u0430\u043d\u0442 Paramiko&#187;<\/strong>, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0449\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435\u043c. <\/p>\n<p>A \u0432 \u0434\u0430\u043b\u0435\u043a\u043e\u043c 1998 \u0433\u043e\u0434\u0443, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044f \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u044f \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0441\u0435\u0431\u0435 alias   <strong>astar <\/strong>\u0418 \u043d\u0435 \u0434\u0443\u043c\u0430\u043b \u044f \u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0431 &#171;<em>a Star<\/em>&#187; \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u043e\u0432\u0443\u0442 \u043c\u0435\u043d\u044f \u0410\u043d\u0434\u0440\u0435\u0439 \u0421\u0442\u0430\u0440\u043a\u043e\u0432 (\u0445\u043e\u0442\u044f \u044f \u043f\u043e\u0442\u043e\u043c \u0441\u0432\u043e\u0435 \u043f\u043e\u0433\u043e\u043d\u044f\u043b\u043e \u043e\u0431\u044b\u0433\u0440\u044b\u0432\u0430\u043b \u0432 \u044d\u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435) \u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 &#8212; AstarPhone, AstarIPad, AstarMacAir, Astarpoint \u0438 \u0442.\u0434. <br \/>\u0442\u0430\u043a \u0447\u0442\u043e \u0443 \u043c\u043e\u0435\u0439 \u043d\u0430\u0434\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430\u0434 netmiko \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0431\u044b\u043b\u043e \u0448\u0430\u043d\u0441\u043e\u0432 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \ud83d\ude42<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h4>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043c\u043e\u0434\u0443\u043b\u044f astarmiko<\/h4>\n<p>\u044d\u0442\u043e \u0441\u0435\u0442\u044c \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0422.\u0435. \u0432\u0441\u0435 \u043c\u043e\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441 Activka(\u043a\u043e\u043d\u0444\u0438\u0433_\u043c\u043e\u0435\u0439_\u0441\u0435\u0442\u0438)<br \/>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430:   <strong>myactivka = Activka(&#8216;activka_byname.yaml&#8217;), <\/strong>\u0433\u0434\u0435 &#8216;activka_byname.yaml&#8217; &#8212; \u0444\u0430\u0439\u043b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YAML \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0441\u0451\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438, (\u0441\u043c. <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/DOCUMENTATION\/activka_byname_ru.md\" rel=\"noopener noreferrer nofollow\"><strong>activka_byname_<\/strong><\/a><a href=\"http:\/\/ru.md\" rel=\"noopener noreferrer nofollow\"><strong>ru.md<\/strong><\/a>)<br \/>\u041e\u0431\u044a\u0435\u043a\u0442\u044b \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u043c\u0435\u044e\u0442 <strong><em>\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430<\/em><\/strong>:<br \/>&#8212; <strong>ma.devices<\/strong> &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0435\u043d \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 \u0441\u0435\u0442\u0438<br \/>&#8212; <strong>ma.realdevices<\/strong> &#8212; \u0442\u0435 \u0436\u0435 \u0438\u043c\u0435\u043d\u0430 \u043d\u043e \u0432\u0441\u0435 \u0431\u0443\u043a\u0432\u044b \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0438 \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u044b \u0432\u0441\u0435 \u043d\u0435 \u0431\u0443\u043a\u0432\u044b \u043d\u0435 \u0446\u0438\u0444\u0440\u044b (.isalnum())<br \/>&#8212; <strong>ma.levels<\/strong> &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0435\u043d \u0441 \u0442\u0438\u043f\u043e\u043c \u0430\u043a\u0442\u0438\u0432\u043a\u0438  R, L2, L3<br \/>&#8212; <strong>ma.segment<\/strong> &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0435\u043d \u043f\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u043c \u0441\u0435\u0442\u0438 (\u0441\u043c\u043e\u0442\u0440\u0438 \u043d\u0438\u0436\u0435)<br \/>\u0418 \u0440\u0430\u0437\u043d\u044b\u0435 &#171;\u0433\u043b\u0430\u0433\u043e\u043b\u044b&#187; &#8212; \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f <strong><em>send_command, getinfo<\/em><\/strong> \u0438 \u0442.\u043f.<\/p>\n<p><strong><em>\u041e\u0431\u0449\u0438\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 Activka<\/em><\/strong><br \/> myactivka.\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c(\u0433\u0434\u0435 = myactivka.\u0432\u044b\u0431\u0440\u0430\u0442\u044c_\u043f\u043e \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c, \u0447\u0442\u043e = \u043e\u0434\u043d\u0430_\u043a\u043e\u043c\u0430\u043d\u0434\u0430_\u0438\u043b\u0438_\u0441\u043f\u0438\u0441\u043e\u043a )<\/p>\n<p>\u0412 \u043e\u0441\u043d\u043e\u0432\u0443 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u043b\u0451\u0433 YAML \u0444\u0430\u0439\u043b (<strong><em>activka_byname.yaml<\/em><\/strong>) \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430:<\/p>\n<p><code>Router1:<br \/> device_type: cisco_ios<br \/> ip: some_ip_1<br \/> Router2:<br \/> device_type: huawei<br \/> ip: some_ip_2<br \/> Switch1:<br \/> device_type: huaweivrrp<br \/> ip: some_ip_3<br \/> Switch2:<br \/> device_type: cisco_ios<br \/> ip: some_ip_4<br \/> LEVEL:<br \/> Router1: R<br \/> Router2: R<br \/> Switch1: L3<br \/> Switch2: L2<br \/> SEGMENT:<br \/> Router1: ``<br \/> Router2: Othe_area_of_Network<br \/> Switch1: City1<br \/> Switch2: Place2<\/code><\/p>\n<p>\u0433\u0434\u0435:<br \/> <strong>device_type<\/strong> &#8212; \u0442\u0438\u043f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u0430\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0432 netmiko<br \/> <strong>ip<\/strong> &#8212; ip \u0430\u0434\u0440\u0435\u0441 \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<br \/> <strong>LEVEL<\/strong> &#8212; \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440 (R), L2 \u0438\u043b\u0438 L3 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440, \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0438\u043c\u0435\u0435\u0442 \u043b\u0438 \u0441\u043c\u044b\u0441\u043b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 arp \u0442\u0430\u0431\u043b\u0438\u0446\u044b (R), \u0442\u0430\u0431\u043b\u0438\u0446\u044b MAC \u0430\u0434\u0440\u0435\u0441\u043e\u0432 (L2) \u0438\u043b\u0438 \u0438 \u0442\u043e\u0433\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e (L3) &#8212; \u0434\u0430 \u043c\u0430\u043b\u043e \u043b\u0438 \u0435\u0449\u0435 \u0437\u0430\u0447\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u043e\u0433\u0438\u043a\u0435 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c<br \/> <strong>SEGMENT<\/strong>:<br \/> \u0442\u0443\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435.<br \/> \u0441\u0445\u0435\u043c\u0443 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0441\u0435\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u044d\u0442\u043e  \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u043b\u044c\u0446\u0430 \u0412\u041e\u041b\u0421, \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043f\u043e \u0420\u0420\u041b, \u0441\u043f\u0443\u0442\u043d\u0438\u043a\u0430\u043c, \u0412\u0427,  \u0438 \u0432 \u043c\u043e\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f (Putty + SupperPutty) \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0431\u0438\u0442\u043e \u043f\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c <strong><em>SEG A &#8230;.. SEG I,<\/em><\/strong> \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0431\u044d\u043a\u0430\u043f\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0436\u0435 \u0438\u043c\u0435\u043d\u0430\u043c\u0438. \u042f \u043c\u044b\u0441\u043b\u044e \u043e \u0441\u0435\u0442\u0438 \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0443\u0441\u043a\u0430\u043c\u0438, \u0442\u0430\u043a \u043f\u0440\u043e\u0449\u0435 \u0442\u0440\u0430\u0431\u043b\u0448\u0443\u0442\u0438\u0442\u044c.<\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c <strong>SEGMENT<\/strong> &#8212; \u044d\u0442\u043e \u043b\u044e\u0431\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0432\u0430\u043c \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438 \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u0442\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b<\/p>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/base.py\" rel=\"noopener noreferrer nofollow\"><code>astarmiko\/base.py<\/code><\/a>\u00a0\u2014 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0441\u00a0<code>Activka<\/code>\u00a0\u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/async_exec.py\" rel=\"noopener noreferrer nofollow\"><code>astarmiko\/async_exec.py<\/code>\u00a0<\/a>\u2014 \u043a\u043b\u0430\u0441\u0441\u00a0<code>ActivkaAsync<\/code>\u00a0\u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f SSH-\u043a\u043e\u043c\u0430\u043d\u0434<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/log_config.py\" rel=\"noopener noreferrer nofollow\"><code>astarmiko\/log_config.py<\/code><\/a>\u00a0\u2014 \u0433\u0438\u0431\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (JSON, stdout)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/scripts\/fh.py\" rel=\"noopener noreferrer nofollow\"><code>scripts\/fh.py<\/code><\/a>\u00a0\u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 FindHost: \u043f\u043e\u0438\u0441\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e IP \u0438\u043b\u0438 MAC (\u0441 \u043d\u0435\u0435 \u0442\u043e \u0432\u0441\u0435 \u0438 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/scripts\/acm.py\" rel=\"noopener noreferrer nofollow\"><code>scripts\/acm.py<\/code><\/a>\u00a0\u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 ACtivkaManagment: CLI \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/tree\/main\/astarmiko\/YAML\" rel=\"noopener noreferrer nofollow\"><code>YAML\/<\/code>\u00a0<\/a>\u2014 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043c\u0430\u043f\u043f\u0438\u043d\u0433 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/tree\/main\/astarmiko\/TEMPLATES\" rel=\"noopener noreferrer nofollow\"><code>TEMPLATES\/<\/code><\/a>\u00a0\u2014 \u0448\u0430\u0431\u043b\u043e\u043d\u044b TextFSM \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 <code>YAML\/<\/code> \u0438 <code>TEMPLATES\/<\/code>\u043c\u043e\u0433\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043d\u043e \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e (..\/) \u0434\u043e\u043b\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u043a\u0430\u043a <strong><em>localpath <\/em><\/strong><br \/>\u041b\u044e\u0431\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0431\u0430\u0437\u0438\u0440\u0443\u044e\u0449\u0430\u044f\u0441\u044f \u043d\u0430 astarmiko \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YAML (\u0435\u0433\u043e \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0438 \u043b\u0435\u0433\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438)<br \/> <a href=\"http:\/\/fh.py\" rel=\"noopener noreferrer nofollow\">fh.py<\/a> \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0449\u0435\u0442 \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043f\u0430\u043f\u043a\u0435,  \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u0444\u0430\u0439\u043b fh.yaml, <br \/>\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u044f \u043d\u0430\u0437\u0432\u0430\u043b:<\/p>\n<details class=\"spoiler\">\n<summary>astarmiko.yaml   \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/summary>\n<div class=\"spoiler__content\">\n<h4>localpath: ~\/astarmiko\/<\/h4>\n<p>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u043f\u0443\u0442\u0438 \u0434\u043e \u043f\u0430\u043f\u043e\u043a \u0438\u043b\u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 astarmiko.  textFSM \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0438 (\u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 YAML) \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0432 <strong><em>~\/astarmiko\/ TEMPLATES\/<\/em><\/strong> \u0438 <strong><em>~\/astarmiko\/ YAML\/<\/em><\/strong><\/p>\n<p>\u043f\u0443\u0442\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u044f \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u0441\u0435 \u043c\u043e\u0438 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0443\u0432\u044f\u0437\u0430\u043d\u044b \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0438 \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043c\u043e\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0434\u0430, \u0430 \u0442\u0430\u043a \u043f\u0443\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0445\u043e\u0442\u044c \u0432 nt \u0445\u043e\u0442\u044c \u0432 posix \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 <\/p>\n<h3>\u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 &#8212; \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c<\/h3>\n<p>\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u043e ssh, \u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e tacacs \u0438\u043b\u0438 radius \u0443\u0447\u0435\u0442\u043a\u0430<\/p>\n<p>user: gAAAAABn7NmekcfGhIjrwJRXL6v0QRm3SAz4dz-GSm16gu7dpBIyw5omo-A1d3-LjaNwPwTN6Vg-1jzW5_0aPeFbwe0p6TZtsQ==<br \/>password: gAAAAABn7Nme6Kb4cI-sqsyApPFm2JsqLtp-<br \/> 2Hds7Jov8MY50XBx3s1VKOIXgA3FKjIa_FjpqkbdDsG6bWwzobwhw9SOrSwHOA==<\/p>\n<p>\u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0430 \u043f\u043e\u0442\u043e\u043c \u0448\u0438\u0444\u0440\u0443\u0435\u0442\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f CLI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u043e\u0434\u0443\u043b\u044f <a href=\"https:\/\/github.com\/astaraiki\/astarconf\" rel=\"noopener noreferrer nofollow\"><strong>astarconf<\/strong><\/a><\/p>\n<h3>\u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0435\u0440\u0432\u044b\u0445 \u043e\u043a\u0442\u0435\u0442\u043e\u0432 mac \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432<\/h3>\n<p>phone_mac:<\/p>\n<ul>\n<li>\n<p>805e<\/p>\n<\/li>\n<li>\n<p>001a <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432 \u0441\u0435\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e \u043f\u043e\u0440\u0442 \u043d\u0430 \u043a\u043e\u043c\u043c\u0443\u0442\u0430\u0442\u043e\u0440\u0435 \u044d\u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 mac \u0430\u0434\u0440\u0435\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 &#171;\u0441\u0432\u0435\u0442\u044f\u0442\u0441\u044f&#187; \u043d\u0430 \u043f\u043e\u0440\u0442\u0443, \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u043c. \u0422\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0440\u0435\u043d\u0434\u043e\u0432 IP \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u0432 \u0441\u0435\u0442\u0438 \u043d\u0435 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438 \u0443 \u0432\u0441\u0435\u0445 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043e\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0440\u0435\u043d\u0434\u0430 mac \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e, \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a<\/p>\n<\/li>\n<\/ul>\n<h3>templpath: ~\/astarmiko\/TEMPLATES\/<\/h3>\n<p>\u041f\u0443\u0442\u044c, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f textFSM \u0448\u0430\u0431\u043b\u043e\u043d\u044b<\/p>\n<h3>dict_of_cmd: ~\/astarmiko\/YAML\/commands.yaml<\/h3>\n<p>\u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 <a href=\"https:\/\/github.com\/AstarAiki\/astarmiko\/blob\/main\/astarmiko\/YAML\/commands.yaml\" rel=\"noopener noreferrer nofollow\">commands.yaml<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435, \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0418\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043d\u0438\u0445 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u044b textFSM <br \/>(\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 &#8212; \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0432 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0441\u0432\u043e\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u044c\u0442\u0435\u0441\u044c \u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 textFSM  \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f)<\/p>\n<h3>logging: True\/False<\/h3>\n<p>\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u043e\u0433\u043e\u0432<\/p>\n<h3>logfile: \/some_path\/astarmiko.log<\/h3>\n<p>\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043b\u043e\u0433 \u0444\u0430\u0439\u043b\u0430<\/p>\n<h3>loglevel: INFO\/WARNING\/DEBUG etc<\/h3>\n<p>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0430<\/p>\n<h3>log_format_str:<\/h3>\n<p>\u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u043b\u043e\u0433\u0430, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u0442 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0433\u043e<\/p>\n<h3>add_account: (\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u0447\u0435\u0442\u043a\u0438)<\/h3>\n<p>\u0412 \u043b\u044e\u0431\u044b\u0445 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u0445 \u0431\u044b\u0432\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435, \u0433\u0434\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c tacacs \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435 \u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0443\u0447\u0435\u0442\u043a\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c. \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u0437 <strong><em>astarmiko<\/em><\/strong> \u043f\u0440\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0443\u0447\u0435\u0442\u043a\u043e\u0439, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442 \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0432\u0435\u0440\u043d\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435<br \/> \u0423\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435 \u0448\u0438\u0444\u0440\u0443\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0434\u0443\u043b\u044f <a href=\"https:\/\/github.com\/astaraiki\/astarconf\" rel=\"noopener noreferrer nofollow\"><strong>astarconf<\/strong><\/a><\/p>\n<ul>\n<li>\n<p>password: gAAAAABoB1JEZiWkUNiaXAs-ItSPTUrPyBCP4jyZBLWF0P9SGahWSD5ZWNK9QFxCbkPCnPFdqmigVQx8vmrMAbkz09mJRNH7HA== <br \/>user: gAAAAABoB1JEHSOPYy3-0SAUhGgzlRnXTf56-1frsFs9d2CRYuwqRtfAQRgZYF0ohraFCN74IaR1P3Zdr1BONnNZVAa8d9Yyvw==<\/p>\n<\/li>\n<li>\n<p>password: gAAAAABoB1JEUFWn9R_rx-MaZ7QFyPiVK5mh4VgHZmpiAcTLV8EZ3QM99gK8ZVkjAqSXnOjGGOGSL3SU0e85Pcc9f33BQ-Q4og== <br \/>user: gAAAAABoB1JE-WO-0EEjVG7-mmK1fSMGEzRaCdVxW1WW81ZBSFzxkYmMT1PvWevC7RI9Ey6b-xiv4hGLXq0wFrWifTYwDNRxgg==<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h3>\u0412\u044b\u0448\u0435\u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0439 commands.yaml:<\/h3>\n<p>\u0412 \u0441\u0432\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043b\u044e\u0431\u043e\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0447\u0430\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 arp, \u043e\u0431\u0449\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 mac \u0430\u0434\u0440\u0435\u0441\u043e\u0432, mac \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 IP \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432 \u0438 \u0442.\u043f.<\/p>\n<p>\u0441\u0430\u043c\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 astarmiko \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u043c\u043d\u043e\u0433\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445, \u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0432 <strong><em>command.yaml <\/em><\/strong>\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 <strong><em>\u043c\u0435\u0436\u0434\u0443 \u0441\u043c\u044b\u0441\u043b\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u0435\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0431\u0440\u0435\u043d\u0434\u0430<\/em><\/strong><\/p>\n<p>\u0442\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <strong><em>mac_delimeters<\/em><\/strong> &#8212; \u043f\u043e \u0441\u0443\u0442\u0438 \u0441\u0442\u0438\u043b\u044c \u0432\u044b\u0432\u043e\u0434\u0430 (\u0438 \u0432\u0432\u043e\u0434\u0430) mac \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0442 \u0431\u0440\u0435\u043d\u0434\u0430 \u043a \u0431\u0440\u0435\u043d\u0434\u0443 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0437\u0430\u043f\u0438\u0441\u0438 6 \u043f\u043e 2 \u0438\u043b\u0438 3 \u043f\u043e 4 \u043d\u043e \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0442\u043e\u0447\u043a\u0430 \u0438\u043b\u0438 \u0442\u0438\u0440\u0435 \u0438\u043b\u0438 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 &#8212;<\/p>\n<\/div>\n<\/div>\n<\/div>\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-465531","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/465531","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=465531"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/465531\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=465531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=465531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=465531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}