پایتون برای مهندسان شبکه
Python для сетевых инженеров.
معرفی کتاب «پایتون برای مهندسان شبکه» (با عنوان لاتین Python для сетевых инженеров.) نوشتهٔ Самойленко Н.، منتشرشده توسط نشر 2023 در سال 2023. این کتاب در فرمت pdf، زبان ru ارائه شده است.
В книге рассматриваются основы Python с примерами и заданиями построенными на сетевой тематике. С одной стороны, книга достаточно базовая, чтобы её мог одолеть любой желающий, а с дру- гой стороны, в книге рассматриваются все основные темы, которые позволят дальше расти самостоятельно. Книга не ставит своей целью глубокое рассмотрение Python. Задача книги – объяснить понятным языком основы Python и дать понимание необходимых инструментов для его практического использования. Всё, что рассматривается в книге, ориентировано на сетевое оборудование и работу с ним. Это даёт возможность сразу использовать в работе сетевого инженера то, что было изучено на курсе. Все примеры показываются на примере оборудования Cisco, но, конечно же, они применимы и для любого другого оборудования. В большинстве примеров в книге используется Python 3.7. При этом Python 3.7 это минималь- ная версия для работы с книгой, для версий >= 3.7 практически все что рассматривается в книге (изменился вывод некоторых сообщений), будет работать аналогично, для версий Python < 3.7 возможны нюансы. Введение О книге Для кого эта книга Зачем Вам учиться программировать? Требуемые версии ОС и Python Примеры Задания Вопросы Презентации Форматы файлов книги Обсуждение Часто задаваемые вопросы (FAQ) Будет ли печатная версия книги? Почему в книге нет темы X? Чем это отличается от обычного вводного курса по Python? Почему книга именно для сетевых инженеров? Почему именно Python? Книга будет когда-то платной? Благодарности Ресурсы для обучения по книге Подготовка рабочего окружения Задания Тесты Дополнительные материалы I. Основы Python 1. Подготовка к работе Подготовка рабочего окружения Подготовленные VM Подготовка виртуальной машины/хоста самостоятельно Облачные сервисы Сетевое оборудование ОС и редактор Редактор Thonny IDE PyCharm Система управления пакетами pip Установка модулей pip или pip3 Виртуальные окружения Встроенный модуль venv Установка пакетов Интерпретатор Python Дополнительные материалы Задания Задание 1.1 2. Использование Git и GitHub Основы Git Первичная настройка Git Инициализация репозитория Отображение статуса репозитория в приглашении Работа с Git git status Файл .gitignore git add git commit Дополнительные возможности git diff git log Аутентификация на GitHub Добавление SSH-ключа на GitHub Работа со своим репозиторием заданий Создание репозитория на GitHub Клонирование репозитория с GitHub Работа с репозиторием Синхронизация локального репозитория с удалённым Добавление новых файлов или изменений в существующих Коммит Push на GitHub Работа с репозиторием заданий и примеров Копирование репозитория с GitHub Обновление локальной копии репозитория Просмотр изменений Просмотр изменений, которые будут синхронизированы Дополнительные материалы Задания Задание 2.1 3. Начало работы с Python Синтаксис Python Комментарии Интерпретатор Python. IPython help() print() dir() Специальные команды ipython %history %time Переменные Имена переменных Задания Задание 3.1 4. Типы данных в Python Числа Строки (Strings) Полезные методы для работы со строками Метод join Методы upper, lower, swapcase, capitalize Метод count Метод find Методы startswith, endswith Метод replace Метод strip Метод split Форматирование строк Форматирование строк с методом format Объединение литералов строк Список (List) Полезные методы для работы со списками append extend pop remove index insert sort Словарь (Dictionary) Полезные методы для работы со словарями clear copy get setdefault keys, values, items del update Варианты создания словаря Литерал dict dict.fromkeys Кортеж (Tuple) Множество (Set) Полезные методы для работы с множествами add() discard() clear() Операции с множествами Варианты создания множества Булевы значения Преобразование типов int bin hex list set tuple str Проверка типов isdigit isalpha isalnum type Вызов методов цепочкой Основы сортировки данных Дополнительные материалы Задания Задание 4.1 Задание 4.2 Задание 4.3 Задание 4.4 Задание 4.5 Задание 4.6 Задание 4.7 Задание 4.8 5. Создание базовых скриптов Исполняемый файл Передача аргументов скрипту (argv) Ввод информации пользователем Задания Задание 5.1 Задание 5.1a Задание 5.1b Задание 5.1c Задание 5.1d Задание 5.2 Задание 5.2a Задание 5.3 Задание 5.3a 6. Контроль хода программы if/elif/else Условия True и False Операторы сравнения Оператор in Операторы and, or, not Оператор and Оператор or Пример использования конструкции if/elif/else Тернарное выражение (Ternary expression) for Вложенные for Совмещение for и if while break, continue, pass Оператор break Оператор continue Оператор pass for/else, while/else for/else while/else Работа с исключениями try/except/else/finally try/except try/except/else try/except/finally Когда использовать исключения raise Встроенные исключения Дополнительные материалы Задания Задание 6.1 Задание 6.2 Задание 6.2a Задание 6.2b Задание 6.3 7. Работа с файлами Открытие файлов open Чтение файлов read readline readlines seek Запись файлов write writelines Закрытие файлов close Конструкция with Открытие двух файлов Примеры работы с файлами Разбор вывода столбцами Получение ключа и значения из разных строк вывода Вложенный словарь Вывод с пустыми значениями Дополнительные материалы Задания Задание 7.1 Задание 7.2 Задание 7.2a Задание 7.2b Задание 7.3 Задание 7.3a Задание 7.3b 8. Полезные возможности и инструменты Форматирование строк с помощью f-строк Синтаксис Особенности использования f-строк Примеры использования f-строк Что использовать format или f-строки Распаковка переменных Замена ненужных элементов _ Использование * Примеры распаковки Распаковка итерируемых объектов Пример распаковки в цикле for List, dict, set comprehensions List comprehensions (генераторы списков) Dict comprehensions (генераторы словарей) Set comprehensions (генераторы множеств) Отладка кода Отладчик Отладка с помощью print и разновидностей print vs pprint vs print(f"{value=}") locals rich.inspect rich.traceback Встроенный отладчик pdb Базовые команды передвижения по программе Контекст в коде, переменные Выполнение Python команд в pdb Дополнительные команды по передвижению Breakpoints Базовые варианты установки breakpoint Breakpoint с условием Привязка команд к breakpoint ipdb Дополнительные материалы II. Повторное использование кода 9. Функции Создание функций Вызов функции Оператор return Документация (docstring) Пространства имен. Области видимости Поиск переменных Локальные и глобальные переменные Параметры и аргументы функций Типы параметров функции Обязательные параметры Необязательные параметры (параметры со значением по умолчанию) Типы аргументов функции Позиционные аргументы Ключевые аргументы Аргументы переменной длины Позиционные аргументы переменной длины Ключевые аргументы переменной длины Распаковка аргументов Распаковка позиционных аргументов Распаковка ключевых аргументов Пример использования ключевых аргументов переменной длины и распаковки аргументов Аргументы, которые можно передавать только как ключевые Распространенные проблемы/нюансы работы с функциями Список/словарь в который собираются данные в функции, создан за пределами функции Значения по умолчанию в параметрах создаются во время создания функции Ошибка UnboundLocalError: local variable referenced before assignment Дополнительные материалы Задания Задание 9.1 Задание 9.1a Задание 9.2 Задание 9.2a Задание 9.3 Задание 9.3a Задание 9.4 10. Полезные функции Функция print sep end file flush Функция range Функция sorted reverse key Пример сортировки разных объектов enumerate Пример использования enumerate для EEM Функция zip Использование zip для создания словаря Функция all Функция any Анонимная функция (лямбда-выражение) Функция map List comprehension вместо map Функция filter List comprehension вместо filter 11. Модули Импорт модуля import module import module as from module import object from module import * Создание своих модулей if __name__ == "__main__" Пути поиска модулей Добавление своих скриптов в пути поиска модулей Рекомендации по поводу расположения функций в коде Задания Задание 11.1 Задание 11.2 Задание 11.2a 12. Полезные модули Модуль subprocess Функция subprocess.run Получение результата выполнения команды Отключение вывода Работа со стандартным потоком ошибок Примеры использования модуля Модуль os os.environ os.mkdir os.listdir os.path os.path.exists os.path.isdir, os.path.isfile os.path.split os.path.abspath Модуль ipaddress ipaddress.ip_address ipaddress.ip_network ipaddress.ip_interface Пример использования модуля Модуль tabulate headers Стиль таблицы Выравнивание столбцов Модуль pprint Ограничение вложенности pformat Сортировка словарей Дополнительные материалы pprint tabulate Задания Задание 12.1 Задание 12.2 Задание 12.3 13. Итераторы, итерируемые объекты и генераторы Итерируемый объект Итераторы Файл как итератор Генератор (generator) generator expression (генераторное выражение) Дополнительные материалы III. Регулярные выражения 14. Синтаксис регулярных выражений Синтаксис регулярных выражений Наборы символов Символы повторения + * ? {n} Специальные символы . ^ $ [] | () Жадность символов повторения Группировка выражений Нумерованные группы Именованные группы Разбор вывода команды show ip dhcp snooping с помощью именованных групп Группа без захвата Повторение захваченного результата Дополнительные материалы 15. Модуль re Объект Match group groups groupdict start, end span Функция search Обработка вывода show cdp neighbors detail Функция match Функция finditer Обработка вывода show cdp neighbors detail Функция findall Функция compile Параметры, которые доступны только при использовании re.compile Флаги re.DOTALL Функция re.split Функция re.sub Дополнительные материалы Задания Задание 15.1 Задание 15.1a Задание 15.1b Задание 15.2 Задание 15.2a Задание 15.3 Задание 15.4 Задание 15.5 IV. Запись и передача данных 16. Unicode Стандарт Юникод Кодировки Юникод в Python 3 Строки Байты Конвертация между байтами и строками encode, decode str.encode, bytes.decode Как работать с Юникодом и байтами Примеры конвертации между байтами и строками subprocess telnetlib pexpect Работа с файлами Выводы Ошибки при конвертации Обработка ошибок Параметр errors в encode Параметр errors в decode Дополнительные материалы 17. Работа с файлами в формате CSV, JSON, YAML Работа с файлами в формате CSV Чтение Запись DictWriter Указание разделителя Работа с файлами в формате JSON Чтение json.load json.loads Запись json.dumps json.dump Дополнительные параметры методов записи Изменение типа данных Ограничение по типам данных Работа с файлами в формате YAML Синтаксис YAML Список Словарь Строки Комбинация элементов Модуль PyYAML Чтение из YAML Запись в YAML yaml.full_load() Дополнительные материалы Задания Задание 17.1 Задание 17.2 Задание 17.3 Задание 17.3a Задание 17.3b Задание 17.4 V. Работа с сетевым оборудованием 18. Подключение к оборудованию Ввод пароля Модуль getpass Переменные окружения Модуль pexpect pexpect.spawn Специальные символы в shell pexpect.EOF Метод pexpect.expect Пример использования pexpect Работа с pexpect без отключения постраничного вывода команд Модуль telnetlib Метод read_until Метод write Метод read_very_eager read_until vs read_very_eager Метод expect Метод close Пример использования telnetlib Постраничный вывод команд Модуль paramiko Метод send Метод recv Метод close Пример использования paramiko Постраничный вывод команд Модуль netmiko Поддерживаемые типы устройств Словарь, определяющий параметры устройств Подключение по SSH Режим enable Отправка команд send_command send_config_set send_config_from_file Дополнительные методы Поддержка Telnet Пример использования netmiko Постраничный вывод команд Модуль scrapli Параметры подключения Использование драйвера Отправка команд Объект Response Метод send_command Обнаружение ошибок Метод send_config Методы send_commands, send_configs Подключение telnet Примеры использования scrapli Дополнительные материалы Задания Задание 18.1 Задание 18.1a Задание 18.1b Задание 18.2 Задание 18.2a Задание 18.2b Задание 18.2c Задание 18.3 19. Одновременное подключение к нескольким устройствам Измерение времени выполнения скрипта time datetime Процессы и потоки в Python (CPython) Процессы Количество потоков Потоковая безопасность Модуль logging Модуль concurrent.futures Метод map Обработка исключений с map Метод submit и работа с futures Future Обработка исключений Дополнительные материалы GIL concurrent.futures Полезные вопросы и ответы на stackoverflow Задания Задание 19.1 Задание 19.2 Задание 19.3 Задание 19.3a Задание 19.4 20. Шаблоны конфигураций с Jinja2 Начало работы с Jinja2 Пример использования Jinja Синтаксис шаблонов Jinja2 Контроль символов whitespace trim_blocks, lstrip_blocks Отключение lstrip_blocks для блока Удаление whitespace в блоке Переменные Цикл for if/elif/else Фильтры default dictsort join Тесты defined iterable set include Наследование шаблонов Дополнительные материалы Задания Задание 20.1 Задание 20.2 Задание 20.3 Задание 20.4 Задание 20.5 Задание 20.5a 21. Обработка вывода команд TextFSM Начало работы с TextFSM Синтаксис шаблонов TextFSM Определение переменных Определение состояний Зарезервированные состояния Правила состояний Действия в правилах Line Actions Record Action State Transition Error Action Примеры использования TextFSM show clock show ip interface brief show cdp neighbors detail Record Filldown Required show ip route ospf List show etherchannel summary TextFSM CLI Table Как использовать CLI table Дополнительные материалы Задания Задание 21.1 Задание 21.1a Задание 21.2 Задание 21.3 Задание 21.4 Задание 21.5 VI. Основы объектно-ориентированного программирования 22. Основы ООП Основы ООП Создание класса Создание метода Параметр self Метод __init__ Пример класса Область видимости Переменные класса Задания Задание 22.1 Задание 22.1a Задание 22.1b Задание 22.1c Задание 22.1d Задание 22.2 Задание 22.2a Задание 22.2b Задание 22.2c 23. Специальные методы Подчеркивание в именах Одно подчеркивание перед именем Два подчеркивания перед именем Два подчеркивания перед и после имени Методы __str__, __repr__ Поддержка арифметических операторов Протоколы Протокол итерации Создание итератора Создание итерируемого объекта Протокол последовательности Менеджер контекста Дополнительные материалы Задания Задание 23.1 Задание 23.1a Задание 23.2 Задание 23.3 Задание 23.3a 24. Наследование Основы наследования Задания Задание 24.1 Задание 24.1a Задание 24.2 Задание 24.2a Задание 24.2b Задание 24.2c Задание 24.2d VII. Работа с базами данных 25. Работа с базами данных SQL SQL и Python SQLite SQLite CLI litecli Основы SQL (в sqlite3 CLI) CREATE DROP INSERT SELECT WHERE ALTER UPDATE REPLACE DELETE ORDER BY AND OR IN NOT Модуль sqlite3 Выполнение команд SQL Метод execute Метод executemany Метод executescript Получение результатов запроса Метод fetchone Метод fetchmany Метод fetchall Cursor как итератор Использование модуля sqlite3 без явного создания курсора Обработка исключений Connection как менеджер контекста Пример использования SQLite Дополнительные материалы Задания Задание 25.1 Задание 25.2 Задание 25.3 Задание 25.4 Задание 25.5 Задание 25.5a Задание 25.6 VIII. Дополнительная информация Модуль argparse Вложенные парсеры metavar nargs choices Импорт парсера Передача аргументов вручную Форматирование строк с оператором % Соглашение об именах Имена переменных Имена модулей и пакетов Имена функций Имена классов Подчеркивание в именах Подчеркивание как имя Подчеркивание в интерпретаторе Одно подчеркивание Одно подчеркивание перед именем Одно подчеркивание после имени Два подчеркивания Два подчеркивания перед именем Два подчеркивания перед и после имени Отличия Python 2.7 и Python 3.6 Unicode Функция print input вместо raw_input range вместо xrange Методы словарей dict.keys(), values(), items() Распаковка переменных Итератор вместо списка subprocess.run Jinja2 Модули pexpect, telnetlib, paramiko Мелочи Дополнительная информация Проверка заданий с помощью утилиты pyneng Где решать задания Установка скрипта pyneng Скрипт pyneng Проверка заданий тестами Получение ответов Вывод pyneng Warning Тесты прошли успешно Тесты не прошли Проверка заданий с помощью pytest Основы pytest assert Пример теста Особенности использования pytest для проверки заданий Как запускать тесты для проверки заданий conftest.py pytest.ini Полезные команды pytest-clarity Продолжение обучения Написание скриптов для автоматизации рабочих процессов Python для автоматизации работы с сетевым оборудованием Python без привязки к сетевому оборудованию Книги Курсы Сайты с задачами Подкасты Документация Скачать PDF/Epub
دانلود کتاب پایتون برای مهندسان شبکه