LBHG 0G@BG J . . , JB ) 8J GL • y U T cspSa w • i kS St hegvS wlr • ms Sa wclg mugd m • LOHJD 0G@BG J - 1 7-0 ( ) • /. je nSw 8 JBG@ • hegvS a o / a o • .H GBLP , LBNBLB • 4, 71 mu ro • L7I .H BG@ .HIPJB@AL 7.2 AGH HE LBHG , JB G
! • +! • !3! • 04$ - 2 • mp • U S r • e h I • s U t - 2 • mp C • mp • Cl • s • e h uT • ianmph • U 5)(*) • % *,. ! • !$~*,. "/2 ! • 04*,. 5)(() • % (! • !(! • 04( • '- 016 - 2 • Cl O H • Co c gl • T S T yT • Ac gl I 53 ., .21 8 - 5 8 2 510 81
k gi gc k • a p pwo uo • b a011 m • r y • b i e c y ,: b AC 8: 6 : : : / : 2 : • c kI c b TI c gc k T • c ca N ON ON O S Ti Uj a • N c kON c ON S ON U hO T • t r TiU a AG :8 H .20 - 2 6 1 : C :6 . 6
L 0 - A E A H 1 0 0 • nr R OU S y y • aLi S y y • h L S y ,G y • L L SsMUy y • m S L TS glctuxo • L S • L S y • 0/ / A E PS p R R g ABHC E I / 2 .7 A A E A D C 8 /
T O GU ) OT s E gE gtET GU nrle 5 8 1 9 88 9 T O GU U T T O GU , N h E I - O . gE & E 2 A l E 7 A 68 A 03 E - NANOG71:Network Automation: past, present, and future ( Slide, Movie) .!3+ %,3+ *)-& ! "#$4 105'/ ( 2 '/ 2 ?
• / 4 6 • 6 • o • • • g p • • n • / 4 6 • n hno • 0. • ti t t • • e • f s J .00n hno p • O NPAf s • ir n B p Jr t :4 t S • ir n B p J tg • tip( / /11 63 wS ) . / y tn t
,-3 26 8 1 A 6 4 . $ python –-version Python 2.7.14 $ python2 --version Python 2.7.14 $ python3 --version Python 3.6.3 ae h pt 0CA8 I gi 1T P S 1 uT P CA8 CA8 CA8 ) U ic ae h rn l H
C M/ PPP CIH I IPH I M • 4 57 57 lk • C M/ I M I M )).- . (A( . ) , • 1 H 57 , lk • C M/ I M I M . ) -A . ..,, ( • gUdh XW qawb lk S utsp6082 oms XrnT 1I C - 385129 8 CHI 7I O IHM 0 3H
H • r u T p pe I ch S yH • io ml S r u }O U H ( - C 8A ) 20-. 26 8 1 : A ,;6 4 $ vi sample.py num = 1 if num == 1: print(“Hello JANOG!!!”) $ python3 sample.py Hello JANOG!!! • io ml • s CA8 a p S CA8 g n {t O H I
-= A9= 9 a = 1 # a: int b = 1.1 # b: float print(a) print(b) print(‘-----’) c = a + b # c: float print(c) $ python3 sample_number.py 1 1.1 ----- 2.1 I H I H O 0 S1 T U (Cint a;float b;)" ! ( # ) 2 C
c = “text” # ‘“ $(,# d = "" #)-%+&0 #Python3 ! Unicode+&0 " #Python2 !ASCII u"" .'*/ print(c) print(d) $ python3 sample_string.py text 2 8 1 = A O 0 S TU H I H
= $ python3 sample_dictionary.py router_A 15.1 O S 0 1 TU I I H # keyvalue router_info = { "hostname" : "router_A", "os" : "junos", "version" : "15.1", } # print(router_info["hostname"]) # print(router_info["version"]) : 2 A = C C
sample_if.py num is two num = 2 if num == 1: print("num is one") elif num == 2: print("num is two") else: print("num is the others") 1 830 A U T c ,A PCmU T Tai 21 3 PleH _ f O gI Ch Sfn
C O U # router_list = [”router_A”, ”router_B”] # router_list router_name for router_name in router_list: print(router_name) $ python3 sample_for_2.py router_A router_B # # range(3) = 0,1,2 for num in range(3): print(num) $ python3 sample_for_1.py 0 1 2 H IA TS O U sample_for_1.py sample_for_2.py
= open("sample_read.txt", "r") text = file1.read() # ! print(text) file1.close() # :"w", :"a" file2 = open("sample_write.txt", "w") file2.write("Good!") file2.close() $ python3 sample_file.py Hello JANOG! from sample_read.txt How are you feeling? sample_file.py [ : sample_read.txt] Hello JANOG! from sample_read.txt How are you feeling? [ : sample_write.txt] Good! C HA A C A 8 2 - . -10 8 ,85 8 1 0 0
21 , 2 $ pip3 list Jinja2 (2.9.6) . . . $ pip3 install jinja2 S H HOI C 1 H HOI C HOI C T H U () *& venvvirtualenv",* # pip %'( ( $+)! ) https://docs.python.jp/3/library/venv.html
$ pip2 --version pip 9.0.1 from /Library/Frameworks/Python.framework/Versions /2.7/lib/python2.7/site-packages (python 2.7) $ pip3 --version pip 9.0.1 from /Library/Frameworks/Python.framework/Versions /3.6/lib/python3.6/site-packages (python 3.6) l U ac n, 8 ac ph -r S PC A A A AO c H sm gI Ue T () : pip Python setuptools pip http://www.lifewithpython.com/2012/11/Python-package-setuptools-pip.html 8 c ito 3 . .21 8 - 8 2 10 81
datetime import datetime # datetime datetime now now = datetime.datetime.now() print(now) $ python3 sample_library.py 2017-11-15 14:25:56.360603 sample_library.py 20 3 83H HI C O
P ) J 37 )( 2 <html> <body> <h1> {{ title }} </h1> <p> {{ body }} </p> </body> </html> title = “Web page 1” body = “Hello! World!” {{ }} : {% if %} : if {% endif %} {% for in %} : for {% endfor %} {# #} : [ (Jinja2)] HTML
1 40 0 def add(x, y): sum = x + y return sum sample_unittest.py S OC H OC import unittest import sample_unittest class TestSample(unittest.TestCase): def test_add(self): actual = sample_unittest.add(1,2) expected = 3 self.assertEqual(actual, expected) if __name__ == "__main__": unittest.main() tests/test_sample_unittest.py ├── sample_unittest.py └── tests └── test_sample_unittest.py IA
N-NDE M .ELAMD 4ABQ • l a0 2a r ty o a f vt kh • -IQCN - 4 2:4 -IQCN b ri oc • 0 ri oc • l a-42a r a f vt kh • AGPAMR SMIOEP T : • 0IRHSB AGPAMR SMNQ 0SEQR • w m AGPAMRa IPE Wg e • AGPAMR -IQCN 2 :T • w m : RNN BNV 8APR 2 : AGPAMR SICJ RAPR • w m 2 :T AGPAMRg d • AGPAMR +PIQRA T • w m QIMG T UIRH AGPAMR AMD IPRSA ,NV () -NOWPIGHR X ) 2 -1 ECHMN N SRINMQ +LEPICA 2MC
IOS / IOS-XE One Platform Kit (OnePK) C, Java, Python ASR1000: 3.12 -3.17(EoL) YANG Development Kit(YDK) Python, C++ 16.5.1 later IOS-XR One Platform Kit (OnePK) C, Java, Python ASR900: 5.1.2 - 5.3.3(EoL) ASR9000: 5.1.1 - 5.3.3(EoL) YANG Development Kit(YDK) Python, C++ 6.0.0 later NX-OS One Platform Kit (OnePK) C, Java, Python Nexus9000: all version Nexus6000: - 7.2(EoL) NX-API Web GUI, HTTP/HTTPS Nexus9000: all version Nexus7000: 7.2(0)D1(1) later Nesus6000: 7.2(0)N1(1) later Juniper JUNOS PyEZ Python 11.4 later Juniper Extension Toolkit(JET) Python 16.2 later Extreme (ex-Brocade) Network OS PyNOS Python 5.0.1 later Arista EOS pyeapi, rbeapi, goeapi Python, Ruby, Go 4.1.2 later EOS SDK C++, Python all version O , 5 S , 1
• -21 pI I x t • x pX S s c I i T X nH • , / 6 7 76 ) Cisco Router SSH/Telnet show version (Cisco Command) Juniper Router SSH/Telnet show version (Juniper Command) Hostname: vsrx Model: firefly-perimeter JUNOS Software Release [12.1X47-D15.4] . . . E s C D E s C 5( . ) (D Thu Jan 18 02:03:05.771 UTC Cisco IOS XR Software, Version 6.2.1.23I Copyright (c) 2013-2016 by Cisco Systems, Inc. . . .
L u • i X O n eno • OmC tP r MN v • v i X A N Ccha SPS • ( ) ) , 6 : • kC Pn eno • ( 6 3: : 63 . 35 2 : 2 2 : 1 NAPALM Cisco Router Juniper Router Cisco Juniper get_network_driver(”iosxr") get_facts()[‘os_version’] 12.1X47-D15.4 get_network_driver("junos") get_facts()[‘os_version’]
o • J . H J F A AI EI H F EHA O F • J . CE N I H J F # N I EIH HJ F • ig la R Tt m d d Xc S r n R e r n m • . • / E 17: ) 2 F 5NHEJ 5 67: ( F 0E I 47:# F 6 7: F 47: ( ) ( F • Tp o Uhe RsTx T n o c a d S • di aR S • . J. H J F A AI EI H F NJJI EHA O F # H JI # CN H , 0IJP EC ( - 4 70 HI#:IFN EIH / E 4H
N O • k c l S l S a in • s c O W be • l : , S t A O A • ( ) 62 1 ,. , .03 Ansible (playbook) Cisco Router Juniper Router Ansible iosxr Module Ansible junos Module iosxr-facts debug: var=ansible_net_version junos-facts debug: var=ansible_net_version 12.1X47-D15.4
_ i y ol HRRO NC AM I E CNL AM I E ARE R I R NF MERUNPJ LN S E HRL • O A NNJ wx 5 kh v • y ol • : • 2 : 2 : 6 : 6 : . : /( /NPRI : 2 SLN EMNTN 6ERTI NP OEM UIRCH P MAMCE T 8AMN :PN N • • krfh knsga t • ,M I E im CNPE LN S E 0A AV LN S E k • im,MI E v ) -NO PIGHR X 2 -1 ECHMN :N SRINM ,LEPICA 2MC
• IrH12 e O i • SU y 22. 3 o -0/t • -0/ Tia T • t e Ti h tI i ( o • I a s T • t n I p m i t n I • Ir o Ti ) I • tI Ti U S lo • t n Ir i • p I o u I Ti • cg U I L h ry o • IrH12 O Ir ) - 8 /31-.4 3 6 2 C A , 6 / 6
• , 8 A • h p t P u • l m imn • -- m imn • oc m imn • oc e o • t u O U A UH C P IS O • T s t C y P I • T t P I m imn • T a g I • T I uO I . .21 8 - 6 8 2 10 81