Book resources#

Resources that will come in handy during the learning process:

Preparing the working environment#

To complete tasks, you can use several options:

  • take a prepared virtual machine vmware or vagrant (virtualbox)

  • prepare a virtual machine yourself

  • use one of the cloud services

  • work without creating a virtual machine

More about these options Working environment.

Exercises#

Repository with examples and tasks

All tasks and auxiliary files can be downloaded from the repository. Tasks are duplicated in the book solely for a convenient overview of all tasks in the section. Since all supporting files, code, and tests are in the repository, it is best to do tasks in a copy of the repository. How to make a copy is described in section 2. Using Git and GitHub.

Sometimes, a certain section can be especially difficult, in this case, you can stop at a minimum of tasks. This will allow you to move on and not abandon your studies. Later you can come back and finish the tasks. In general, of course, it is better to do all the tasks, since practice is the only way to properly learn the topic, but sometimes it is better to do fewer tasks and continue studying than to get stuck on one topic and abandon everything.

Chapter

Minimum

All tasks

04_data_structures

4.1, 4.2, 4.3, 4.6

4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8

05_basic_scripts

5.1, 5.1a, 5.2, 5.2a

5.1, 5.1a, 5.1b, 5.1c, 5.1d, 5.2, 5.2a, 5.3, 5.3a

06_control_structures

6.1, 6.2, 6.3

6.1, 6.2, 6.2a, 6.2b, 6.3

07_files

7.1, 7.2, 7.3

7.1, 7.2, 7.2a, 7.2b, 7.2c, 7.3, 7.3a, 7.3b

09_functions

9.1, 9.1a, 9.2, 9.2a, 9.3

9.1, 9.1a, 9.2, 9.2a, 9.3, 9.3a, 9.4

11_modules

11.1, 11.2

11.1, 11.2

12_useful_modules

12.1, 12.2

12.1, 12.2, 12.3

15_module_re

15.1, 15.2, 15.3, 15.4

15.1, 15.1a, 15.1b, 15.2, 15.2a, 15.3, 15.4, 15.5

17_serialization

17.1, 17.2, 17.3

17.1, 17.2, 17.3, 17.3a, 17.3b, 17.4

18_ssh_telnet

18.1, 18.1a, 18.2, 18.2a, 18.2b, 18.3

18.1, 18.1a, 18.1b, 18.2, 18.2a, 18.2b, 18.2c, 18.3

19_concurrent_connections

19.1, 19.2, 19.3

19.1, 19.2, 19.3, 19.3a, 19.4

20_jinja2

20.1, 20.2, 20.3

20.1, 20.2, 20.3, 20.4, 20.5, 20.5a

21_textfsm

21.1, 21.1a, 21.2, 21.3, 21.4

21.1, 21.1a, 21.2, 21.3, 21.4, 21.5

22_oop_basics

22.1, 22.1a, 22.1b, 22.2, 22.2a

22.1, 22.1a, 22.1b, 22.1c, 22.1d, 22.2, 22.2a, 22.2b, 22.2c

23_oop_special_methods

23.1, 23.1a, 23.2

23.1, 23.1a, 23.2, 23.3, 23.3a

24_oop_inheritance

24.1, 24.2, 24.2a

24.1, 24.1a, 24.2, 24.2a, 24.2b, 24.2c, 24.2d

25_db

25.1, 25.2, 25.3

25.1, 25.2, 25.3, 25.4, 25.5, 25.5a, 25.6

Tests#

Repository with examples and tasks

There are automated tests in the repository for checking assignments. They help to check whether everything matches the task, and also give feedback on what does not correspond to the task. As a rule, after the first period of adaptation to tests, it becomes easier to do tasks with tests.

How to work with tests and basics of pyneng.

Further reading#

Almost every book chapter has subchapter “Further reading” which includes useful materials and references on the subject, plus references to official documentations. Moreover, I prepared a collection of resources on “Python for network engineers” topic where you can find a lot of useful articles, books, video courses and podcasts.