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.