{"id":3035,"date":"2017-02-17T17:15:01","date_gmt":"2017-02-17T08:15:01","guid":{"rendered":"http:\/\/www.itbook.info\/web\/?p=3035"},"modified":"2017-09-27T17:53:18","modified_gmt":"2017-09-27T08:53:18","slug":"%e3%83%9e%e3%83%ab%e3%83%81%e3%83%99%e3%83%b3%e3%83%80%e3%83%bc%e3%81%aa%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e6%a9%9f%e5%99%a8%e3%82%92%e5%88%b6%e5%be%a1%e5%87%ba%e6%9d%a5%e3%82%8bpy","status":"publish","type":"post","link":"https:\/\/www.itbook.info\/web\/2017\/02\/%e3%83%9e%e3%83%ab%e3%83%81%e3%83%99%e3%83%b3%e3%83%80%e3%83%bc%e3%81%aa%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e6%a9%9f%e5%99%a8%e3%82%92%e5%88%b6%e5%be%a1%e5%87%ba%e6%9d%a5%e3%82%8bpy.html","title":{"rendered":"\u30de\u30eb\u30c1\u30d9\u30f3\u30c0\u30fc\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u5668\u3092\u5236\u5fa1\u51fa\u6765\u308bPython\u30e9\u30a4\u30d6\u30e9\u30ea\u300cNAPALM\u300d\u3092\u8a66\u3057\u3066\u307f\u305f"},"content":{"rendered":"<aside class=\"row veu_insertAds before\"><div class=\"col-md-12\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\r\n                        <!-- cat_\u4e0a\u90e8 -->\r\n                        <ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-6102004203189610\" data-ad-slot=\"9628163001\" data-ad-format=\"auto\"><\/ins>\r\n                        <script>\r\n                        (adsbygoogle = window.adsbygoogle || []).push({});\r\n                        <\/script><\/div><\/aside><p><a href=\"https:\/\/www.nanog.org\/meetings\/nanog69\/agenda\">NANOG 69<\/a>\u3067\u300cSaltstack + NAPALM\u300d\u3092\u4f7f\u3063\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30aa\u30fc\u30c8\u30e1\u30fc\u30b7\u30e7\u30f3\u306b\u95a2\u3059\u308b\u30d7\u30ec\u30bc\u30f3\u304c\u3042\u308a\u307e\u3057\u305f\u3002<\/p>\n<p><a href=\"https:\/\/www.nanog.org\/sites\/default\/files\/1_Ulinic_Network_Automation_At_v1.pdf\">1_Ulinic_Network_Automation_At_v1.pdf<\/a><\/p>\n<h2 id=\"saltstack\u3068\u306f\">Saltstack\u3068\u306f<\/h2>\n<p>Saltstack\u306f\u3001Chef\u3084Puppet\u3001Ansible\u306a\u3069\u3068\u540c\u3058\u69cb\u6210\u7ba1\u7406\u30c4\u30fc\u30eb\u3067\u3059\u3002\u65e5\u672c\u3067\u306eSaltstack\u306e\u77e5\u540d\u5ea6\u306f\u30a4\u30de\u30a4\u30c1\u3067\u3059\u304c\u3001Ansible\u4e26\u306b\u7c21\u5358\u306b\u5c0e\u5165\u3067\u304d\u3066\u3001Chef\u4ee5\u4e0a\u306b\u6a5f\u80fd\u304c\u8c4a\u5bcc\u306a\u3053\u3068\u304c\u30a6\u30ea\u306e\u3088\u3046\u3067\u3059\u3002<br \/>\n\u305f\u3060\u3057\u3001\u307e\u3060\u307e\u3060\u30de\u30a4\u30ca\u30fc\u306a\u305f\u3081\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3082\u5f31\u304f\u3001\u65e5\u672c\u8a9e\u306e\u60c5\u5831\u3082\u5c11\u306a\u3044\u70b9\u304c\u30c7\u30e1\u30ea\u30c3\u30c8\u3067\u3059\u3002<\/p>\n<p><a href=\"https:\/\/saltstack.com\/\">SaltStack automation for CloudOps, ITOps &amp; DevOps at scale<\/a><\/p>\n<h2 id=\"napalm\u3068\u306f\">NAPALM\u3068\u306f<\/h2>\n<p>NAPALM(Network Automation and Programmability Abstraction Layer with Multivendor support)\u306f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u5668\u306e\u8a2d\u5b9a\u3084\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30aa\u30fc\u30d7\u30f3\u306aPython\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002NAPALM\u3092\u4f7f\u3046\u3053\u3068\u3067\u30de\u30eb\u30c1\u30d9\u30f3\u30c0\u30fc\u88fd\u54c1\u3092\u7d71\u4e00\u5316\u3055\u308c\u305f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u3067\u5236\u5fa1\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002\u52d5\u4f5c\u30a4\u30e1\u30fc\u30b8\u3068\u3057\u3066\u306f\u3001Arista\u306eeAPI\u3084Juniper\u306ePyEZ\u306a\u3069\u306e\u516c\u5f0fAPI\u3084NETCONF\u3001netmiko\u306a\u3069\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u958b\u767a\u3057\u305fPython\u30e9\u30a4\u30d6\u30e9\u30ea\u306a\u3069\u306e\u69d8\u3005\u306aAPI\u3084\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u88cf\u3067\u52d5\u304b\u3057\u3066\u3001\u305d\u306e\u4e0a\u306b\u30ad\u30e3\u30c3\u30d7\u3092\u88ab\u305b\u305f\u30c4\u30fc\u30eb\u304cNAPALM\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\nSaltStack\u3060\u3051\u3067\u306a\u304f\u3001Ansible\u3068\u3082\u9023\u643a\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<p>\u6628\u4eca\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306f\u30de\u30eb\u30c1\u30d9\u30f3\u30c0\u30fc\u3067\u7d44\u3080\u5834\u5408\u304c\u5897\u3048\u3066\u304d\u3066\u3044\u307e\u3059\u306e\u3067\u3001\u305d\u306e\u3088\u3046\u306a\u904b\u7528\u8005\u306b\u3068\u3063\u3066\u306f\u4fbf\u5229\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3060\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/napalm.readthedocs.io\/en\/latest\/#\">Welcome to NAPALM\u2019s documentation! \u2014 NAPALM 1 documentation<\/a><\/p>\n<p><a href=\"https:\/\/github.com\/napalm-automation\/napalm\">napalm-automation\/napalm: Network Automation and Programmability Abstraction Layer with Multivendor support<\/a><\/p>\n<p>\u4eca\u56de\u306fNAPALM\u3092\u4f7f\u3063\u3066\u3001\u5b9f\u969b\u306b\u3044\u304f\u3064\u304b\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u5668\u3092\u5236\u5fa1\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><!--more--><\/p>\n<h2 id=\"napalm\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u5668\">NAPALM\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u5668<\/h2>\n<p>\u73fe\u6642\u70b9\uff082017\u5e742\u6708\uff09\u3067NAPALM\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul>\n<li>Arista EOS<\/li>\n<li>Cisco IOS<\/li>\n<li>Cisco IOS-XR<\/li>\n<li>Cisco NX-OS<\/li>\n<li>Fortinet Fortios<\/li>\n<li>IBM<\/li>\n<li>Juniper JunOS<\/li>\n<li>Mikrotik RouterOS<\/li>\n<li>Palo Alto NOS<\/li>\n<li>Pluribus<\/li>\n<li>Vyos<\/li>\n<\/ul>\n<h2 id=\"napalm\u304c\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u6a5f\u80fd\">NAPALM\u304c\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u6a5f\u80fd<\/h2>\n<p>NAPALM\u304c\u5236\u5fa1\u53ef\u80fd\u306a\u6a5f\u80fd\u306b\u306f\u4ee5\u4e0b\u306e\u69d8\u306a\u3082\u306e\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul>\n<li>get_arp_table<br \/>\nAPR\u30c6\u30fc\u30d6\u30eb\u306e\u53d6\u5f97<\/li>\n<li>get_bgp_config<br \/>\nBGP\u8a2d\u5b9a\u306e\u53d6\u5f97<\/li>\n<li>get_bgp_neighbors<br \/>\nBGP\u30cd\u30a4\u30d0\u30fc\u306e\u53d6\u5f97<\/li>\n<li>get_bgp_neighbors_detail<br \/>\n\u8a73\u7d30\u306aBGP\u30cd\u30a4\u30d0\u30fc\u306e\u53d6\u5f97<\/li>\n<li>get_config<br \/>\n\u8a2d\u5b9a\u306e\u53d6\u5f97<\/li>\n<li>get_environment<br \/>\n\u74b0\u5883\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_facts<br \/>\n\u88c5\u7f6e\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_firewall_policies<br \/>\nFW\u30dd\u30ea\u30b7\u30fc\u306e\u53d6\u5f97<\/li>\n<li>get_interfaces<br \/>\n\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_interfaces_counters<br \/>\n\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u30ab\u30a6\u30f3\u30bf\u30fc\u306e\u53d6\u5f97<\/li>\n<li>get_interfaces_ip<br \/>\n\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u306b\u8a2d\u5b9a\u3057\u3066\u3044\u308bIP\u30a2\u30c9\u30ec\u30b9\u306e\u53d6\u5f97<\/li>\n<li>get_lldp_neighbors<br \/>\nLLDP\u30cd\u30a4\u30d0\u30fc\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_lldp_neighbors_detail<br \/>\n\u8a73\u7d30\u306aLLDP\u30cd\u30a4\u30d0\u30fc\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_mac_address_table<br \/>\nMAC\u30a2\u30c9\u30ec\u30b9\u30c6\u30fc\u30d6\u30eb\u306e\u53d6\u5f97<\/li>\n<li>get_network_instances<br \/>\n\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_ntp_peers<br \/>\nNTP\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_ntp_servers<br \/>\nNTP\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_ntp_stats<br \/>\nNTP\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_optics<br \/>\n\u5149\u51fa\u529b\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_probes_config<br \/>\n\u30d7\u30ed\u30fc\u30d6\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_probes_results<br \/>\n\u30d7\u30ed\u30fc\u30d6\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_route_to<br \/>\n\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_snmp_information<br \/>\nSNMP\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>get_users<br \/>\n\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>is_alive<br \/>\n\u63a5\u7d9a\u72b6\u614b\u306e\u53d6\u5f97<\/li>\n<li>ping<br \/>\nPing\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<li>traceroute<br \/>\nTraceroute\u60c5\u5831\u306e\u53d6\u5f97<\/li>\n<\/ul>\n<p>\u4e0a\u8a18\u6a5f\u80fd\u306f\u30d9\u30f3\u30c0\u30fc\u3054\u3068\u306b\u30b5\u30dd\u30fc\u30c8\u6709\u7121\u304c\u7570\u306a\u308a\u307e\u3059\u3002\u8a73\u7d30\u306f\u4ee5\u4e0b\u306eURL\u53c2\u7167\u3002<\/p>\n<p><a href=\"https:\/\/napalm.readthedocs.io\/en\/latest\/support\/index.html\">Supported Devices \u2014 NAPALM 1 documentation<\/a><\/p>\n<h2 id=\"napalm\u3092\u8a66\u3057\u3066\u307f\u308b\">NAPALM\u3092\u8a66\u3057\u3066\u307f\u308b<\/h2>\n<h3 id=\"\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\">\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/h3>\n<p>\u4eca\u56de\u306fOSX 10.12.3\u4e0a\u3067\u8a66\u3057\u3066\u307f\u307e\u3059\u3002pip\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/p>\n<pre><code class=\"(null)\">% pip install napalm\r\n\r\n% pip list | grep napalm\r\nnapalm (1.1.0)\r\nnapalm-base (0.23.0)\r\nnapalm-eos (0.5.3)\r\nnapalm-fortios (0.3.1)\r\nnapalm-ibm (0.1.7)\r\nnapalm-ios (0.6.1)\r\nnapalm-iosxr (0.4.8)\r\nnapalm-junos (0.6.4)\r\nnapalm-nxos (0.5.0)\r\nnapalm-panos (0.4.0)\r\nnapalm-pluribus (0.5.1)\r\n\r\n% pip show napalm\r\nName: napalm\r\nVersion: 1.1.0\r\nSummary: Network Automation and Programmability Abstraction Layer with Multivendor support\r\nHome-page: https:\/\/github.com\/napalm-automation\/napalm\r\nAuthor: David Barroso\r\nAuthor-email: dbarrosop@dravetech.com\r\nLicense: UNKNOWN\r\nLocation: \/Users\/itbook\/.pyenv\/versions\/2.7.8\/lib\/python2.7\/site-packages\r\nRequires: napalm-iosxr, napalm-ibm, napalm-eos, napalm-nxos, napalm-fortios, napalm-panos, napalm-junos, napalm-base, napalm-ios, napalm-pluribus<\/code><\/pre>\n<h3 id=\"arista\">Arista<\/h3>\n<p>\u7d9a\u3044\u3066\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u30eb\u30fc\u30bf\u3092\u6e96\u5099\u3057\u307e\u3059\u3002\u4eca\u56de\u306fArista\u3068Juniper\u306e\u30eb\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p>Arista EOS\u306e\u8a2d\u5b9a\u306f\u4ee5\u4e0b\u306e\u901a\u308a<\/p>\n<pre><code class=\"(null)\">EOS-1#sh run\r\n! Command: show running-config\r\n! device: EOS-1 (CVX, EOS-4.15.7M)\r\n!\r\n! boot system flash:\/EOS.swi\r\n!\r\ntransceiver qsfp default-mode 4x10G\r\n!\r\nhostname EOS-1\r\n!\r\nspanning-tree mode mstp\r\n!\r\nno aaa root\r\n!\r\nusername test secret 5 $1$m8\/K6n.m$AD0jR8r07N7wYRMLmIAPs\/\r\n!\r\ninterface Management1\r\n   ip address 172.16.41.2\/24\r\n!\r\nno ip routing\r\n!\r\nmanagement api http-commands\r\n   protocol http\r\n   no shutdown\r\n!\r\n!\r\nend<\/code><\/pre>\n<pre><code class=\"(null)\">EOS-1#show version\r\nArista CVX\r\nHardware version:\r\nSerial number:\r\nSystem MAC address:  000c.29f1.b416\r\n\r\nSoftware image version: 4.15.7M\r\nArchitecture:           i386\r\nInternal build version: 4.15.7M-3284043.4157M\r\nInternal build ID:      b0b0dff8-c9ca-40cc-a625-7fd3c8c76ebd\r\n\r\nUptime:                 5 hours and 25 minutes\r\nTotal memory:           2513796 kB\r\nFree memory:            179944 kB<\/code><\/pre>\n<p>Arista\u304b\u3089\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u306b\u306feAPI\u3092\u4f7f\u7528\u3057\u307e\u3059\u306e\u3067\u3001eAPI\u3092\u6709\u52b9\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h3 id=\"juniper\">Juniper<\/h3>\n<p>Juniper\u306e\u8a2d\u5b9a\u306f\u4ee5\u4e0b\u306e\u901a\u308a<\/p>\n<pre><code class=\"(null)\">srx1@srx1&gt; show configuration\r\n## Last commit: 2016-11-30 16:49:26 JST by root\r\nversion 15.1X49-D60.7;\r\ngroups {\r\n    node0 {\r\n        system {\r\n            host-name srx1;\r\n        }\r\n        interfaces {\r\n            fxp0 {\r\n                unit 0 {\r\n                    family inet {\r\n                        address 172.16.41.10\/24;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    node1 {\r\n        system {\r\n            host-name srx2;\r\n        }\r\n        interfaces {\r\n            fxp0 {\r\n                unit 0 {\r\n                    family inet {\r\n                        address 172.16.41.11\/24;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\napply-groups \"${node}\";\r\nsystem {\r\n    host-name srx1;\r\n    time-zone Asia\/Tokyo;\r\n    root-authentication {\r\n        encrypted-password \"$5$LL2YpvKd$OFdFNzb\/f\/9\/K0az5IRtxKK3rZgwZYZCozLDA14v9\/D\"; ## SECRET-DATA\r\n    }\r\n    login {\r\n        user srx1 {\r\n            uid 2000;\r\n            class super-user;\r\n            authentication {\r\n                encrypted-password \"$5$qasOhBQ7$s7QyQgvvDdNT5GKyCx1coLop5F9yXLtoeuJUidEy4O7\"; ## SECRET-DATA\r\n            }\r\n        }\r\n    }\r\n    services {\r\n        ssh {\r\n            protocol-version v2;\r\n        }\r\n        web-management {\r\n            http {\r\n                interface fxp0.0;\r\n            }\r\n        }\r\n    }\r\n    syslog {\r\n        user * {\r\n            any emergency;\r\n        }\r\n        file messages {\r\n            any any;\r\n            authorization info;\r\n        }\r\n        file interactive-commands {\r\n            interactive-commands any;\r\n        }\r\n    }\r\n    license {\r\n        autoupdate {\r\n            url https:\/\/ae1.juniper.net\/junos\/key_retrieval;\r\n        }\r\n    }\r\n}\r\nsecurity {\r\n    screen {\r\n        ids-option untrust-screen {\r\n            icmp {\r\n                ping-death;\r\n            }\r\n            ip {\r\n                source-route-option;\r\n                tear-drop;\r\n            }\r\n            tcp {\r\n                syn-flood {\r\n                    alarm-threshold 1024;\r\n                    attack-threshold 200;\r\n                    source-threshold 1024;\r\n                    destination-threshold 2048;\r\n                    queue-size 2000; ## Warning: 'queue-size' is deprecated\r\n                    timeout 20;\r\n                }\r\n                land;\r\n            }\r\n        }\r\n    }\r\n    policies {\r\n        from-zone trust to-zone trust {\r\n            policy default-permit {\r\n                match {\r\n                    source-address any;\r\n                    destination-address any;\r\n                    application any;\r\n                }\r\n                then {\r\n                    permit;\r\n                }\r\n            }\r\n        }\r\n        from-zone trust to-zone untrust {\r\n            policy default-permit {\r\n                match {\r\n                    source-address any;\r\n                    destination-address any;\r\n                    application any;\r\n                }\r\n                then {\r\n                    permit;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    zones {\r\n        security-zone trust {\r\n            tcp-rst;\r\n        }\r\n        security-zone untrust {\r\n            screen untrust-screen;\r\n        }\r\n    }\r\n}\r\ninterfaces {\r\n    fxp0 {\r\n        unit 0;\r\n    }\r\n}<\/code><\/pre>\n<pre><code class=\"(null)\">srx1@srx1&gt; show version\r\nnode0:\r\n--------------------------------------------------------------------------\r\nHostname: srx1\r\nModel: vsrx\r\nJunos: 15.1X49-D60.7\r\nJUNOS Software Release [15.1X49-D60.7]<\/code><\/pre>\n<h3 id=\"napalm\u3092\u4f7f\u3063\u305f\u30b3\u30f3\u30d5\u30a3\u30b0\u306e\u53d6\u5f97\">NAPALM\u3092\u4f7f\u3063\u305f\u30b3\u30f3\u30d5\u30a3\u30b0\u306e\u53d6\u5f97<\/h3>\n<p>\u6e96\u5099\u304c\u6574\u3044\u307e\u3057\u305f\u306e\u3067\u3001NAPALM\u3092\u4f7f\u7528\u3057\u3066\u30b3\u30f3\u30d5\u30a3\u30b0\u3092\u53d6\u5f97\u3057\u3066\u307f\u307e\u3059\u3002<br \/>\n\u30b3\u30f3\u30d5\u30a3\u30b0\u53d6\u5f97\u306fget_config()\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<h4 id=\"arista\">Arista<\/h4>\n<pre><code class=\"(null)\">% more get_conf_arista.py\r\n#! \/usr\/bin\/env python\r\n# -*- coding: utf-8 -*-\r\n\r\nimport napalm\r\n\r\ndriver = napalm.get_network_driver('eos')\r\ndevice = driver(\r\n    hostname='172.16.41.2',\r\n    username='test',\r\n    password='test' )\r\n\r\nprint 'Device Opening ...',\r\ndevice.open()\r\nprint 'OK\\n'\r\n\r\nresult = device.get_config()\r\n\r\nprint result[u'running']\r\n\r\nprint 'Device Closing ...',\r\ndevice.close()\r\nprint 'Done'<\/code><\/pre>\n<p>\u5b9f\u884c\u7d50\u679c\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<pre><code class=\"(null)\">% python get_conf_arista.py\r\nDevice Opening ...\r\nOK\r\n! Command: show running-config\r\n! device: EOS-1 (CVX, EOS-4.15.7M)\r\n!\r\n! boot system flash:\/EOS.swi\r\n!\r\ntransceiver qsfp default-mode 4x10G\r\n!\r\nhostname EOS-1\r\n!\r\nspanning-tree mode mstp\r\n!\r\nno aaa root\r\n!\r\nusername test secret 5 $1$m8\/K6n.m$AD0jR8r07N7wYRMLmIAPs\/\r\n!\r\ninterface Management1\r\n   ip address 172.16.41.2\/24\r\n!\r\nno ip routing\r\n!\r\nmanagement api http-commands\r\n   protocol http\r\n   no shutdown\r\n!\r\n!\r\nend\r\n\r\nDevice Closing ... Done<\/code><\/pre>\n<h4 id=\"juniper\">Juniper<\/h4>\n<pre><code class=\"(null)\">% more get_conf_juniper.py\r\n#! \/usr\/bin\/env python\r\n# -*- coding: utf-8 -*-\r\n\r\nimport napalm\r\n\r\ndriver = napalm.get_network_driver('junos')\r\ndevice = driver(\r\n    hostname='172.16.41.10',\r\n    username='srx1',\r\n    password='test' )\r\n\r\nprint 'Device Opening ...',\r\ndevice.open()\r\nprint 'OK\\n'\r\n\r\nresult = device.get_config()\r\n\r\nprint result[u'running']\r\n\r\nprint 'Device Closing ...',\r\ndevice.close()\r\nprint 'Done'<\/code><\/pre>\n<p>\u5b9f\u884c\u7d50\u679c\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3002<\/p>\n<pre><code class=\"(null)\">% python get_conf_juniper.py\r\nDevice Opening ... OK\r\n\r\n\r\n## Last commit: 2016-11-30 16:49:26 JST by root\r\nversion 15.1X49-D60.7;\r\ngroups {\r\n    node0 {\r\n        system {\r\n            host-name srx1;\r\n        }\r\n        interfaces {\r\n            fxp0 {\r\n                unit 0 {\r\n                    family inet {\r\n                        address 172.16.41.10\/24;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    node1 {\r\n        system {\r\n            host-name srx2;\r\n        }\r\n        interfaces {\r\n            fxp0 {\r\n                unit 0 {\r\n                    family inet {\r\n                        address 172.16.41.11\/24;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\napply-groups \"${node}\";\r\nsystem {\r\n    host-name srx1;\r\n    time-zone Asia\/Tokyo;\r\n    root-authentication {\r\n        encrypted-password \"$5$LL2YpvKd$OFdFNzb\/f\/9\/K0az5IRtxKK3rZgwZYZCozLDA14v9\/D\";\r\n    }\r\n    login {\r\n        user srx1 {\r\n            uid 2000;\r\n            class super-user;\r\n            authentication {\r\n                encrypted-password \"$5$qasOhBQ7$s7QyQgvvDdNT5GKyCx1coLop5F9yXLtoeuJUidEy4O7\";\r\n            }\r\n        }\r\n    }\r\n    services {\r\n        ssh {\r\n            protocol-version v2;\r\n        }\r\n        web-management {\r\n            http {\r\n                interface fxp0.0;\r\n            }\r\n        }\r\n    }\r\n    syslog {\r\n        user * {\r\n            any emergency;\r\n        }\r\n        file messages {\r\n            any any;\r\n            authorization info;\r\n        }\r\n        file interactive-commands {\r\n            interactive-commands any;\r\n        }\r\n    }\r\n    license {\r\n        autoupdate {\r\n            url https:\/\/ae1.juniper.net\/junos\/key_retrieval;\r\n        }\r\n    }\r\n}\r\nsecurity {\r\n    screen {\r\n        ids-option untrust-screen {\r\n            icmp {\r\n                ping-death;\r\n            }\r\n            ip {\r\n                source-route-option;\r\n                tear-drop;\r\n            }\r\n            tcp {\r\n                syn-flood {\r\n                    alarm-threshold 1024;\r\n                    attack-threshold 200;\r\n                    source-threshold 1024;\r\n                    destination-threshold 2048;\r\n                    queue-size 2000;\r\n                    timeout 20;\r\n                }\r\n                land;\r\n            }\r\n        }\r\n    }\r\n    policies {\r\n        from-zone trust to-zone trust {\r\n            policy default-permit {\r\n                match {\r\n                    source-address any;\r\n                    destination-address any;\r\n                    application any;\r\n                }\r\n                then {\r\n                    permit;\r\n                }\r\n            }\r\n        }\r\n        from-zone trust to-zone untrust {\r\n            policy default-permit {\r\n                match {\r\n                    source-address any;\r\n                    destination-address any;\r\n                    application any;\r\n                }\r\n                then {\r\n                    permit;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    zones {\r\n        security-zone trust {\r\n            tcp-rst;\r\n        }\r\n        security-zone untrust {\r\n            screen untrust-screen;\r\n        }\r\n    }\r\n}\r\ninterfaces {\r\n    fxp0 {\r\n        unit 0;\r\n    }\r\n}\r\n\r\nDevice Closing ... Done<\/code><\/pre>\n<h3 id=\"napalm\u3092\u4f7f\u3063\u305farp\u30c6\u30fc\u30d6\u30eb\u306e\u53d6\u5f97\">NAPALM\u3092\u4f7f\u3063\u305fARP\u30c6\u30fc\u30d6\u30eb\u306e\u53d6\u5f97<\/h3>\n<p>ARP\u30c6\u30fc\u30d6\u30eb\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u306b\u306f\u3001get_arp_table()\u95a2\u6570\u3092\u5229\u7528\u3057\u307e\u3059\u3002<\/p>\n<h4 id=\"arista\">Arista<\/h4>\n<pre><code class=\"(null)\">% more get_arp_arista.py\r\n#! \/usr\/bin\/env python\r\n# -*- coding: utf-8 -*-\r\n\r\nimport napalm\r\n\r\ndriver = napalm.get_network_driver('eos')\r\ndevice = driver(\r\n    hostname='172.16.41.2',\r\n    username='test',\r\n    password='test' )\r\n\r\nprint 'Device Opening ...',\r\ndevice.open()\r\nprint 'OK\\n'\r\n\r\nresult = device.get_arp_table()\r\n\r\nprint result\r\n\r\nprint 'Device Closing ...',\r\ndevice.close()\r\nprint 'Done'<\/code><\/pre>\n<p>\u5b9f\u884c\u7d50\u679c\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3002<\/p>\n<pre><code class=\"(null)\">% python get_arp_arista.py\r\nDevice Opening ... OK\r\n\r\n[{u'interface': u'Management1', u'ip': u'172.16.41.1', u'mac': u'00:50:56:C0:00:01', u'age': 0.0}]\r\nDevice Closing ... Done<\/code><\/pre>\n<p>\u5b9f\u6a5f\u3067\u306e\u78ba\u8a8d\u7d50\u679c\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3002<\/p>\n<pre><code class=\"(null)\">EOS-1#show arp\r\nAddress         Age (min)  Hardware Addr   Interface\r\n172.16.41.1             0  0050.56c0.0001  Management1<\/code><\/pre>\n<h4 id=\"juniper\">Juniper<\/h4>\n<pre><code class=\"(null)\">% more get_arp_juniper.py\r\n#! \/usr\/bin\/env python\r\n# -*- coding: utf-8 -*-\r\n\r\nimport napalm\r\n\r\ndriver = napalm.get_network_driver('junos')\r\ndevice = driver(\r\n    hostname='172.16.41.10',\r\n    username='srx1',\r\n    password='test' )\r\n\r\nprint 'Device Opening ...',\r\ndevice.open()\r\nprint 'OK\\n'\r\n\r\nresult = device.get_arp_table()\r\n\r\nprint result\r\n\r\nprint 'Device Closing ...',\r\ndevice.close()\r\nprint 'Done'<\/code><\/pre>\n<p>\u5b9f\u884c\u7d50\u679c\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3002<\/p>\n<pre><code class=\"(null)\">% python get_arp_juniper.py\r\nDevice Opening ... OK\r\n\r\n[{'interface': u'fab0.0', 'ip': u'30.17.0.2', 'mac': u'4C:96:14:23:62:B0', 'age': None}, {'interface': u'em0.0', 'ip': u'129.16.0.16', 'mac': u'00:50:56:20:7C:04', 'age': 1090.0}, {'interface': u'fxp0.0', 'ip': u'172.16.41.1', 'mac': u'00:50:56:C0:00:01', 'age': 981.0}, {'interface': u'em1.32768', 'ip': u'192.168.1.1', 'mac': u'AA:BB:CC:DD:EE:FF', 'age': 558.0}]\r\nDevice Closing ... Done<\/code><\/pre>\n<p>\u5b9f\u6a5f\u3067\u306e\u78ba\u8a8d\u7d50\u679c\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3002<\/p>\n<pre><code class=\"(null)\">srx1@srx1&gt; show arp\r\nMAC Address       Address         Name                      Interface               Flags\r\n4c:96:14:23:62:b0 30.17.0.2       30.17.0.2                 fab0.0                  permanent\r\n00:50:56:20:7c:04 129.16.0.16     129.16.0.16               em0.0                   none\r\n00:50:56:c0:00:01 172.16.41.1     172.16.41.1               fxp0.0                  none\r\naa:bb:cc:dd:ee:ff 192.168.1.1     192.168.1.1               em1.32768               none\r\nTotal entries: 4<\/code><\/pre>\n<h2 id=\"\u307e\u3068\u3081\">\u307e\u3068\u3081<\/h2>\n<p>NAPALM\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30de\u30f3\u30c9\u3092\u610f\u8b58\u305b\u305a\u306b\u30de\u30eb\u30c1\u30d9\u30f3\u30c0\u30fc\u74b0\u5883\u306b\u304a\u3051\u308b\u81ea\u52d5\u5316\u304c\u884c\u3048\u308b\u306e\u306f\u3001\u7a2e\u985e\u304c\u591a\u3051\u308c\u3070\u591a\u3044\u307b\u3069\u904b\u7528\u5de5\u6570\u3092\u524a\u6e1b\u3067\u304d\u305d\u3046\u3067\u3059\u3002\u8abf\u3079\u3066\u898b\u308b\u3068\u3001NAPALM\u306f\u73fe\u5728\u3082\u6d3b\u767a\u306b\u958b\u767a\u304c\u7d9a\u3051\u3089\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u4eca\u5f8c\u3082\u6a5f\u80fd\u306f\u8ffd\u52a0\u3055\u308c\u3066\u3044\u304f\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u6b21\u56de\u306f\u3001\u300cAnsible + NAPALM\u300d\u304b\u300cSaltstack + NAPALM\u300d\u3092\u8a66\u3057\u3066\u307f\u3088\u3046\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<aside class=\"row veu_insertAds after\"><div class=\"col-md-12\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\r\n                        <!-- cat_\u4e0a\u90e8 -->\r\n                        <ins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-6102004203189610\" data-ad-slot=\"9628163001\" data-ad-format=\"auto\"><\/ins>\r\n                        <script>\r\n                        (adsbygoogle = window.adsbygoogle || []).push({});\r\n                        <\/script><\/div><\/aside>","protected":false},"excerpt":{"rendered":"<p>NANOG 69\u3067\u300cSaltstack + NAPALM\u300d\u3092\u4f7f\u3063\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30aa\u30fc\u30c8\u30e1\u30fc\u30b7\u30e7\u30f3\u306b\u95a2\u3059\u308b\u30d7\u30ec\u30bc\u30f3\u304c\u3042\u308a\u307e\u3057\u305f\u3002 1_Ulinic_Network_Automation_At_v1.pdf Saltstac [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[275,320,321,322],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v15.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u30de\u30eb\u30c1\u30d9\u30f3\u30c0\u30fc\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u5668\u3092\u5236\u5fa1\u51fa\u6765\u308bPython\u30e9\u30a4\u30d6\u30e9\u30ea\u300cNAPALM\u300d\u3092\u8a66\u3057\u3066\u307f\u305f - \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a8\u30f3\u30b8\u30cb\u30a2\u304c\u65e5\u3005\u306e\u51fa\u6765\u4e8b\u3092\u8a9e\u308b<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.itbook.info\/web\/2017\/02\/\u30de\u30eb\u30c1\u30d9\u30f3\u30c0\u30fc\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u5668\u3092\u5236\u5fa1\u51fa\u6765\u308bpy.html\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u30de\u30eb\u30c1\u30d9\u30f3\u30c0\u30fc\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u5668\u3092\u5236\u5fa1\u51fa\u6765\u308bPython\u30e9\u30a4\u30d6\u30e9\u30ea\u300cNAPALM\u300d\u3092\u8a66\u3057\u3066\u307f\u305f - \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a8\u30f3\u30b8\u30cb\u30a2\u304c\u65e5\u3005\u306e\u51fa\u6765\u4e8b\u3092\u8a9e\u308b\" \/>\n<meta property=\"og:description\" content=\"NANOG 69\u3067\u300cSaltstack + NAPALM\u300d\u3092\u4f7f\u3063\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30fb\u30aa\u30fc\u30c8\u30e1\u30fc\u30b7\u30e7\u30f3\u306b\u95a2\u3059\u308b\u30d7\u30ec\u30bc\u30f3\u304c\u3042\u308a\u307e\u3057\u305f\u3002 1_Ulinic_Network_Automation_At_v1.pdf Saltstac [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itbook.info\/web\/2017\/02\/\u30de\u30eb\u30c1\u30d9\u30f3\u30c0\u30fc\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u6a5f\u5668\u3092\u5236\u5fa1\u51fa\u6765\u308bpy.html\" \/>\n<meta property=\"og:site_name\" content=\"\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a8\u30f3\u30b8\u30cb\u30a2\u304c\u65e5\u3005\u306e\u51fa\u6765\u4e8b\u3092\u8a9e\u308b\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-17T08:15:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-09-27T08:53:18+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.itbook.info\/web\/#website\",\"url\":\"https:\/\/www.itbook.info\/web\/\",\"name\":\"\\u30cd\\u30c3\\u30c8\\u30ef\\u30fc\\u30af\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u304c\\u65e5\\u3005\\u306e\\u51fa\\u6765\\u4e8b\\u3092\\u8a9e\\u308b\",\"description\":\"\\u30cd\\u30c3\\u30c8\\u30ef\\u30fc\\u30af\\u30cd\\u30bf\\u3068\\u304b\\u3092\\u9069\\u5f53\\u306b\\u66f8\\u304d\\u6563\\u3089\\u304b\\u3059\\u30d6\\u30ed\\u30b0\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.itbook.info\/web\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.itbook.info\/web\/2017\/02\/%e3%83%9e%e3%83%ab%e3%83%81%e3%83%99%e3%83%b3%e3%83%80%e3%83%bc%e3%81%aa%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e6%a9%9f%e5%99%a8%e3%82%92%e5%88%b6%e5%be%a1%e5%87%ba%e6%9d%a5%e3%82%8bpy.html#webpage\",\"url\":\"https:\/\/www.itbook.info\/web\/2017\/02\/%e3%83%9e%e3%83%ab%e3%83%81%e3%83%99%e3%83%b3%e3%83%80%e3%83%bc%e3%81%aa%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e6%a9%9f%e5%99%a8%e3%82%92%e5%88%b6%e5%be%a1%e5%87%ba%e6%9d%a5%e3%82%8bpy.html\",\"name\":\"\\u30de\\u30eb\\u30c1\\u30d9\\u30f3\\u30c0\\u30fc\\u306a\\u30cd\\u30c3\\u30c8\\u30ef\\u30fc\\u30af\\u6a5f\\u5668\\u3092\\u5236\\u5fa1\\u51fa\\u6765\\u308bPython\\u30e9\\u30a4\\u30d6\\u30e9\\u30ea\\u300cNAPALM\\u300d\\u3092\\u8a66\\u3057\\u3066\\u307f\\u305f - \\u30cd\\u30c3\\u30c8\\u30ef\\u30fc\\u30af\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u304c\\u65e5\\u3005\\u306e\\u51fa\\u6765\\u4e8b\\u3092\\u8a9e\\u308b\",\"isPartOf\":{\"@id\":\"https:\/\/www.itbook.info\/web\/#website\"},\"datePublished\":\"2017-02-17T08:15:01+00:00\",\"dateModified\":\"2017-09-27T08:53:18+00:00\",\"author\":{\"@id\":\"https:\/\/www.itbook.info\/web\/#\/schema\/person\/3707482c5270f902ec5d92dba1db0920\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.itbook.info\/web\/2017\/02\/%e3%83%9e%e3%83%ab%e3%83%81%e3%83%99%e3%83%b3%e3%83%80%e3%83%bc%e3%81%aa%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e6%a9%9f%e5%99%a8%e3%82%92%e5%88%b6%e5%be%a1%e5%87%ba%e6%9d%a5%e3%82%8bpy.html\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.itbook.info\/web\/#\/schema\/person\/3707482c5270f902ec5d92dba1db0920\",\"name\":\"na3620\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.itbook.info\/web\/#personlogo\",\"inLanguage\":\"ja\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1e7e7f8079aa707666c2a1069de805ef?s=96&d=mm&r=g\",\"caption\":\"na3620\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/posts\/3035"}],"collection":[{"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/comments?post=3035"}],"version-history":[{"count":4,"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/posts\/3035\/revisions"}],"predecessor-version":[{"id":3106,"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/posts\/3035\/revisions\/3106"}],"wp:attachment":[{"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/media?parent=3035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/categories?post=3035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itbook.info\/web\/wp-json\/wp\/v2\/tags?post=3035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}