Introduction xxix
Part I Introduction
Chapter 1 The Network Programmability and Automation Ecosystem 1
  First, a Few Definitions 2
  Your Network Programmability and Automation Toolbox 14
  Software and Network Engineers: The New Era 19
Part II Linux
Chapter 2 Linux Fundamentals 21
  The Story of Linux 21
  The Linux Boot Process 26
  A Linux Command Shell Primer 28
  Finding Help in Linux 31
  Files and Directories in Linux 35
  Input and Output Redirection 57
  Archiving Utilities 67
  Linux System Maintenance 73
  Installing and Maintaining Software on Linux 94
  Summary 118
Chapter 3 Linux Storage, Security, and Networks 119
  Linux Storage 119
  Linux Security 135
  Linux Networking 158
  Summary 181
Chapter 4 Linux Scripting 183
  Regular Expressions and the grep Utility 184
  The AWK Programming Language 193
  The sed Utility 196
  General Structure of Shell Scripts 203
  Output and Input 207
  Variables 215
  Conditional Statements 223
  Loops 232
  The until-do Loop 237
  Functions 238
  Expect 242
  Summary 246
Part III Python
Chapter 5 Python Fundamentals 249
  Scripting Languages Versus Programming Languages 250
  Network Programmability 253
  Computer Science Concepts 255
  Python Fundamentals 260
  Summary 309
  References 310
Chapter 6 Python Applications 311
  Organizing the Development Environment 311
  The virtualenv Tool 331
  Python Modules 333
  Python Applications 336
  Summary 385
Part IV Transport
Chapter 7 HTTP and REST 387
  HTTP Overview 387
  The REST Framework 392
  The HTTP Connection 394
  HTTP Transactions 397
  HTTP Messages 415
  Resource Identification 431
  Postman 436
  HTTP and Bash 447
  HTTP and Python 455
  Summary 467
Chapter 8 Advanced HTTP 469
  HTTP/1.1 Authentication 469
  Transport Layer Security (TLS) and HTTPS 487
  HTTP/2 503
  Summary 508
Chapter 9 SSH 509
  SSH Overview 509
  Setting Up SSH 521
  Enabling SSH on Cisco Devices 526
  Secure File Transfer 540
  Summary 551
  References 551
Part V Encoding
Chapter 10 XML 553
  XML Overview, History, and Usage 553
  XML Syntax and Components 554
  Making XML Valid 562
  Navigating XML Documents 574
  XML Stylesheet Language Transformations (XSLT) 578
  Processing XML Files with Python 580
  Summary 588
Chapter 11 JSON 591
  JavaScript Object Notation (JSON) 591
  JSON Schema Definition (JSD) 595
  Summary 614
Chapter 12 YAML 615
  YAML Structure 616
  Handling YAML Data Using Python 626
  Summary 637
Part VI Modeling
Chapter 13 YANG 639
  A Data Modeling Primer 639
  YANG Data Models 642
  Types of YANG Modules 663
  YANG Tools 673
  Summary 688
Part VII Protocols
Chapter 14 NETCONF and RESTCONF 689
  NETCONF 689
  RESTCONF 739
  Summary 779
Chapter 15 gRPC, Protobuf, and gNMI 781
  Requirements for Efficient Transport 781
  History and Principles of gRPC 782
  gRPC as a Transport 784
  The Protocol Buffers Data Format 786
  Working with gRPC and Protobuf in Python 790
  The gNMI Specification 798
  The Anatomy of gNMI 799
  Managing Network Elements with gNMI/gRPC 814
  Summary 818
Chapter 16 Service Provider Programmability 819
  The SDN Framework for Service Providers 819
  Segment Routing (SR) 823
  BGP Link State (BGP-LS) 843
  Path Computation Element Protocol (PCEP) 859
  Summary 880
Part VIII Programmability Applications
Chapter 17 Programming Cisco Platforms 881
  API Classification 882
  Network Platforms 883
  Meraki 922
  DNA Center 931
  Collaboration Platforms 942
  Summary 954
Chapter 18 Programming Non-Cisco Platforms 957
  General Approaches to Programming Networks 957
  Implementation Examples 962
  Summary 987
Chapter 19 Ansible 989
  Ansible Basics 989
  Extending Ansible Capabilities 1003
  Jinja2 Templates 1034
  Using Ansible for Cisco IOS XE 1055
  Using Ansible for Cisco IOS XR 1073
  Using Ansible for Cisco NX-OS 1084
  Using Ansible in Conjunction with NETCONF 1095
  Summary 1108
Part IX Looking Ahead
Chapter 20 Looking Ahead 1109
  Some Rules of Thumb 1109
  What Does All This Mean for Your Career? 1118
9781587145148, TOC, 4/1/2021