Чит-лист програмування мережі Python
Усі таблиці, що містяться в шпаргалках, також представлені в таблицях, нижче яких легко скопіювати та вставити.
The Чит-лист програмування мережі Python обкладинки:
- Необхідні загальні інсталяційні модулі: PIP та IDLE
- Найпопулярніші бібліотеки програмування мережі python
- Криміналістична мережа: необхідні бібліотеки та сценарії пітона
- Ключові слова Python
- Типи даних, математичні оператори
- Аналіз мережі з Python
- Бібліотека dnspython
- Модуль Socket (інтерфейс API Берклі)
- Типи розеток, створення розеток
- Приклади розетки
- Приклади сценаріїв
- Модулі розбору
Переглянути або завантажити зображення шпаргалки JPG
Клацніть правою кнопкою миші на зображенні внизу, щоб зберегти файл JPG (ширина 1987 x 2362 висота в пікселях), або натисніть тут, щоб відкрити його на новій вкладці браузера. Як тільки зображення відкриється в новому вікні, вам може знадобитися натиснути на зображення, щоб збільшити його та переглянути повнорозмірний jpeg.
Переглянути або завантажити PDF-файл шпаргалки
Завантажте PDF-файл шпаргалки тут. Коли він відкриється на новій вкладці браузера, просто клацніть правою кнопкою миші PDF та перейдіть до меню завантаження.
Що включено в цю шпаргалку
Наступні категорії та предмети були включені в шпаргалку:
Необхідні загальні інсталяційні модулі: PIP та IDLE
PIP (інсталятор пакунків Python) | $ sudo apt-get install python-pip |
IDLE (інтегроване середовище розвитку та навчання) | $ sudo apt – отримати установку в режимі очікування |
Найпопулярніші бібліотеки програмування мережі python
Джанго | Високорівнева веб-база Python для швидкого розвитку та прагматична |
пікос (раніше асинкоро) | Рамка Python для асинхронного, одночасного, мережевого, розподіленого програмування та розподілених обчислень |
Дизель | Чистий API для запису мережевих клієнтів та серверів. TCP та UDP підтримуються. Клієнти для HTTP, DNS, Redis, Riak та MongoDB. |
Пульсар | Простий спосіб побудови масштабованих мережевих програм |
Скручений | На основі подій для інтернет-додатків: клієнтів та серверів HTTP, SSHv2 та Telnet, IRC, XMPP, IMAPv4, POP3, SMTP, IMAPv4, POP3, SMTP тощо. |
NAPALM | Рівень абстракції мережевої автоматизації та програмованості з підтримкою Multivendor – для роботи з постачальниками пристроїв |
gevent | Мережева бібліотека Python, заснована на підпрограмі, яка використовує greenlet для забезпечення синхронного API високого рівня поверх циклу подій libev або libuv |
Селера | Асинхронна черга завдань / черга завдань на основі розподіленого передачі повідомлення |
Криміналістична мережа: необхідні бібліотеки та сценарії пітона
Інструмент EDDIE | Системний та мережевий моніторинг, безпека та аналіз продуктивності для python |
pypcap | Невеликий інструмент захоплення пакетів на основі python та pcap |
Параміко | Реалізація протоколу SSHv2, що забезпечує функціональність як клієнта, так і сервера |
піп | Установник пакета для python |
Індекс пакетів Python (PyPI) | Репозиторій програмного забезпечення для Python |
Ключові слова Python
>>> імпортувати ключове слово >>> друк (Keyword.kwlist) |
Пітон 2.7.15+ [‘і’, ‘як’, ‘стверджувати’, ‘перерва’, ‘клас’, ‘продовжувати’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘крім’, ‘exec’, ‘ нарешті ‘,’ за ‘,’ з ‘,’ глобальний ‘,’ якщо ‘,’ імпорт ‘,’ в ‘,’ є ‘,’ лямбда ‘,’ не ‘,’ або ‘,’ пройти ‘,’ надрукувати ‘ , “підняти”, “повернути”, “спробувати”, “поки”, “з”, “врожай”] |
Пітон 3.8.0 [‘Неправильно’, ‘Ніхто’, ‘Правда’, ‘і’, ‘як’, ‘стверджувати’, ‘асинхронізувати’, ‘чекати’, ‘перерва’, ‘клас’, ‘продовжувати’, ‘деф’, ‘ del ‘,’ elif ‘,’ else ‘,’ крім ‘,’ нарешті ‘,’ for ‘,’ from ‘,’ global ‘,’ if ‘,’ import “,” in “,” is “,” lambda ” , ‘нелокальний’, ‘не’, ‘або’, ‘пройти’, ‘підняти’, ‘повернути’, ‘спробувати’, ‘поки’, ‘з’, ‘врожай’] |
Типи даних
Текст | str – x = "Привіт Світ" |
Числові | int, float, складний |
Послідовність | список, кортеж, діапазон |
Картографування | диктант |
Встановити | набір, заморожений набір |
Булева | бул |
Двійкові | байти, байт-масив, перегляд пам’яті |
Математичні оператори
** | Експонент 4 ** 2 = 16 |
% | Модуль / залишок 43% 5 = 3 |
// | Ціле ділення 11 // 5 = 2 |
/ | Відділ 11/5 = 2,2 |
* | Множення 3 * 3 = 9 |
– | Віднімання 8 – 3 = 5 |
+ | Доповнення 2 + 2 = 4 |
== | Дорівнює |
!= | Не дорівнює |
< | Менше ніж |
> | Більш чим |
<= | Менше або рівне |
>= | Більший або рівний |
Коментарі
# | Може використовуватися на початку рядка або в межах рядка до кінця рядка |
Аналіз мережі з Python
Використовуйте NMAP з сканером портів | $ pip встановити python-nmap |
Команди для запуску сканування NMAP | імпортувати nmap nmScan = nmap.PortScanner () nmScan.scan (’10 .1.0.0 ‘, ’25 -443’) |
Команди NMAP, що використовуються з python | nmScan.scaninfo () # {‘tcp’: {‘services’: ’25 -80′, ‘method’: ‘connect’}} nmScan.all_hosts () nmScan [’10 .1.0.0 ‘]. ім’я хоста () nmScan [’10 .1.0.0 ‘]. state () nmScan [’10 .1.0.0 ‘]. all_protocols () nmScan [’10 .1.0.0 ‘] [‘ tcp ‘]. ключі () # Результати – [80, 25, 22, 135] nmScan [’10 .1.0.0 ‘]. has_tcp (25) # Результат True / False nmScan [’10 .1.0.0 ‘]. has_tcp (21) # Результат хибний / правдивий |
Бібліотека dnspython
Установка | $ pip встановіть dnspython |
Основний DNS-запит | імпорт dns.resolver name = ‘google.com’ для qtype в ‘A’, ‘AAAA’, ‘MX’, ‘NS’, ‘TXT’, ‘SOA’: answer = dns.resolver.query (ім’я, qtype, підвищення_on_no_answer = Неправдиво) якщо answer.rrset не вказано None: друк (answer.rrset) |
Отримайте перевагу MX та прізвище | імпорт dns.resolver відповіді = dns.resolver.query (‘dnspython.org’, ‘MX’) |
Модуль Socket (інтерфейс API Берклі)
Основні функції та методи | socket () • ind () • прослуховувати () • accept () • connect () • connect_ex () • send () • recv () • close () |
Типи розеток
SOCK_STREAM | Для протоколів TCP • Надійна передача • Послідовність пакетів • Орієнтована на з’єднання • Двостороння |
SOCK_DGRAM | Для протоколів UDP • Ненадійна передача • Немає послідовності пакетів • Без з’єднання (UDP) • Не двонаправлена |
Створення розеток
import socket # Імпортує метод socket socket.socket () # Функція, яка створює сокет | |
носок = розетка. socket (сімейство сокетів, тип сокета, протокол = значення) | |
Розетка сімейства | AF_UNIX або AF_INET |
Тип розетки | SOCK_STREAM або SOCK_DGRAM для TCP & UDP відповідно • напр. TCP – UDP2 = сокет. socket (socket.AF_INET, socket.SOCK_DGRAM) • напр. UDP – TCP2 = сокет. socket (socket.AF_INET, socket.SOCK_STREAM) |
Метод розетки клієнта | connect () |
Метод розетки сервера | bind () • прослуховувати (відставання) • accept () |
Методи розетки TCP | s.recv () # Отримати пакети TCP s.send () # Відіслати пакети TCP |
Методи розетки UDP | s.recvfrom () # Отримує пакети UDP s.sendto () # передає пакети UDP |
Більше методів розетки | |
закрити () | Закрийте розетку |
gethostname () | Повертає рядок, що включає ім’я хоста поточного ПК |
gethostbyname () | Повертає рядок, що включає ім’я хоста та IP-адресу поточного ПК |
слухати () | Налаштування та запуск слухача TCP |
прив’язувати () | Приєднайте (ім’я хоста, номер порту) до сокета |
accept () | Зачекайте підключення клієнта TCP |
connect () | Ініціюйте підключення до сервера TCP |
Методи розетки TCP | |
mysocket.accept () | Повертає кортеж із підключеною віддаленою адресою |
mysocket.bind (адреса) | Приєднайте вказану локальну адресу до сокета |
mysocket.connect (адреса) | Дані, що надсилаються через сокет, призначаються за вказаною віддаленою адресою |
mysocket.getpeername () | Повертає віддалену адресу, де підключений сокет |
mysocket.getsockname () | Повертає адресу локальної кінцевої точки сокета
|
mysocket.sendto (дані, адреса) | Примушуйте пакет даних до певної віддаленої адреси |
Блокування розетки | |
набір блоків (1) | Блок налаштування |
набір блоків (0) | Видалити / зняти налаштування блоку |
Отримайте номер порту за допомогою доменного імені | імпорт сокета socket.getservbyname (“доменне ім’я”) |
Перевірте підтримку IPV6 | імпорт сокета socket.has_ipv6 # Відповідь ІСТИНА чи ЛЖА |
getaddrinfo () – Прив’язати сервер до порту | з сокета імпортує цейдрінфо getaddrinfo (None, “FTP”, 0, socket.SOCK_STREAM, 0, socket.AI_PASSIVE) [(2, 1, 6, ”, (‘0.0.0.0’, 21)), (10, 1, 6, ”, (‘::’, 21, 0, 0))] |
Приклади розетки
Приклад розетки на стороні клієнта |
імпорт сокета s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) host = socket.gethostname () порт = 1111 місервер.прив’язати ((хост, порт)) # замінити місервер і мікліент з повторюваними IP-адресами місервер.слухати (5) істинно: мікліент,addr = myserver.accept () друкувати ("Підключено до {str (addr)}") мікліент.надіслати (msg.encode ("ascii")) мікліент.закрити () |
Приклад Socket на стороні клієнта з коментарями |
# імпортувати бібліотеку сокетів імпорт сокета # створити об’єкт сокета # зарезервуйте порт на комп’ютері, який може бути будь-чим # прив’язати до порту # перевести розетку в режим прослуховування # цикл, поки користувач не перерве його або не з’явиться помилка # Встановіть зв’язок із клієнтом. # надіслати клієнту повідомлення з подякою. # Закрийте з’єднання |
Приклади сценаріїв
Створіть список пристроїв |
>>>пристрої = [‘SW1’, ‘SW2’, ‘SW3’] |
Створіть список словників VLAN |
vlans = [{‘id’: ‘100’, ‘name’: ‘staff’}, {‘id’: ‘200’, ‘name’: ‘VOICE’}, {‘id’: ‘300’, ‘name’: ‘wireless’}] |
Запишіть функції для збору команд та натискання на мережу |
>>>def get_commands (vlan, ім’я): команди = [] commandnds.append (‘vlan’ + vlan) commandnds.append (“ім’я” + ім’я) команди повернення >>> def push_commands (пристрій, команди): |
Створіть VLAN в декількох комутаторах, використовуючи сценарій python |
>>>для vlan in vlans: id = vlan.get (‘id’) name = vlan.get (‘ім’я’) print (‘\ n’) print (“Налаштувати VLAN: ‘+ id) command = get_commands (id, ім’я) для пристрою в пристроях: push_команди (пристрій, команди) print (‘\ n’) |
Цитування: https://www.oreilly.com/library/view/network-programmability-and/9781491931240/ch04.html |
Вимкнути інтерфейс маршрутизатора за допомогою команди python |
>>> з імпорту push push_commands device = ‘router2’ command = [‘інтерфейс Eth0 / 1’, ‘shutdown’] push_команди (пристрій, команди) |
Модулі розбору
argparse () | Модуль argparse дозволяє легко писати зручні для користувача інтерфейси командного рядка. Програма визначає, які аргументи вимагає, і argparse з’ясує, як проаналізувати ці дані з sys.argv |
Створення аналізатора | >>> parser = argparse.ArgumentParser (description = ‘Обробити деякі цілі числа.’) |
Додавання аргументів | >>> parser.add_argument (‘цілі числа’, метавар = ‘N’, type = int, nargs = ‘+’, … help = ‘ціле число для акумулятора’) >>> parser.add_argument (‘- сума’, dest = ‘накопичити’, action = ‘store_const’, … const = сума, за замовчуванням = макс, … help = ‘підсумуйте цілі числа (за замовчуванням: знайдіть максимум)’) |
Розбір аргументів | >>> parser.parse_args ([‘- сума’, ‘7’, ‘-1′, ’42’]) Простір імен (нагромаджувати =, цілі числа = [7, -1, 42]) |