Чит-лист програмування мережі 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’)
для rdata у відповідях:
print (“Хост”, rdata.exchange, “має перевагу”, rdata.preference)

Модуль 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 на стороні клієнта з коментарями

# імпортувати бібліотеку сокетів
імпорт сокета

# створити об’єкт сокета
s = socket.socket ()
друкувати ("Сокет створено")

# зарезервуйте порт на комп’ютері, який може бути будь-чим
порт = 1111

# прив’язати до порту
# порожня рядок у полі IP замість IP змушує сервер слухати запити
# надходять з інших комп’ютерів у мережі
s.bind ((”, порт))
друкувати ("розетка прив’язана до% s" % (порт))

# перевести розетку в режим прослуховування
підкладка (5)
друкувати ("socket слухає")

# цикл, поки користувач не перерве його або не з’явиться помилка
істинно:

# Встановіть зв’язок із клієнтом.
c, addr = s.accept ()
print (“З’єднано з”, addr)

# надіслати клієнту повідомлення з подякою.
c.send (“Дякую за з’єднання”)

# Закрийте з’єднання
c.close ()

Приклади сценаріїв

Створіть список пристроїв

>>>пристрої = [‘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 (пристрій, команди):
print (“Підключення до пристрою:” + пристрій)
для команд cmd:
print (‘Команда надсилання:’ + cmd)

Створіть 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])