Шпаргалка по сетевому программированию на Python

Шпаргалка по сетевому программированию на Python


Все таблицы, представленные в шпаргалках, также представлены в таблицах ниже, которые легко скопировать и вставить.

Шпаргалка по сетевому программированию на Python крышки:

  • Обязательные общие установочные модули: PIP и IDLE
  • Лучшие библиотеки сетевого программирования Python
  • Сетевая экспертиза: необходимые библиотеки и скрипты на python
  • Ключевые слова Python
  • Типы данных, математические операторы
  • Анализ сети с помощью Python
  • Библиотека dnspython
  • Socket Module (интерфейс API Беркли)
  • Типы сокетов, создание сокетов
  • Примеры сокетов
  • Примеры скриптов
  • Модули разбора

Посмотреть или скачать Cheat Sheet JPG изображение

Щелкните правой кнопкой мыши на изображении ниже, чтобы сохранить файл JPG (1987 ширина x 2362 высота в пикселях), или нажмите здесь, чтобы открыть его в новой вкладке браузера. Как только изображение откроется в новом окне, вам может потребоваться нажать на изображение, чтобы увеличить его и просмотреть полноразмерный файл JPEG..

Шпаргалка по сетевому программированию на Python

Просмотреть или скачать PDF-файл шпаргалки

Загрузите PDF-файл шпаргалки здесь. Когда он откроется в новой вкладке браузера, просто щелкните правой кнопкой мыши на PDF и перейдите в меню загрузки.

Что входит в этот шпаргалку

Следующие категории и предметы были включены в шпаргалку:

Обязательные общие установочные модули: PIP и IDLE

PIP (установщик пакетов Python)

$ sudo apt-get установить python-pip

IDLE (интегрированная среда разработки и обучения)

$ sudo apt-get install idle

Лучшие библиотеки сетевого программирования Python

Джанго

Веб-фреймворк Python высокого уровня для быстрой и прагматичной разработки

Пикос (ранее Асинкоро)

Платформа Python для асинхронного, параллельного, сетевого, распределенного программирования и распределенных вычислений

дизель

Чистый API для написания сетевых клиентов и серверов. TCP и UDP поддерживается. Пакеты клиентов для HTTP, DNS, Redis, Riak и MongoDB.

пульсар

Простой способ создания масштабируемых сетевых программ

скрученный

Основанная на событиях инфраструктура для интернет-приложений: клиенты и серверы HTTP, SSHv2 и Telnet, IRC, XMPP, IMAPv4, POP3, SMTP, IMAPv4, POP3, SMTP и т. Д..

NAPALM

Уровень абстракции сетевой автоматизации и программируемости с поддержкой нескольких поставщиков - для работы с поставщиками услуг

GEvent

Сетевая библиотека на основе сопрограмм Python, которая использует greenlet для обеспечения высокоуровневого синхронного API поверх цикла событий libev или libuv

Сельдерей

Асинхронная очередь задач / очередь заданий на основе распределенной передачи сообщений

Сетевая экспертиза: необходимые библиотеки и скрипты на python

EDDIE Tool

Агент системного и сетевого мониторинга, безопасности и анализа производительности для python

pypcap

Инструмент для захвата небольших пакетов на основе Python и PCAP

Paramiko

Реализация протокола SSHv2, обеспечивающего функциональность как клиента, так и сервера

зернышко

Установщик пакетов для python

Индекс пакетов Python (PyPI)

Репозиторий программного обеспечения для Питона

Ключевые слова Python

>>> ключевое слово импорта
>>> печать (keyword.kwlist)

Python 2.7.15+ ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'кроме', 'exec', ' наконец, ',' для ',' из ',' global ',' if ',' import ',' in ',' is ',' lambda ',' not ',' или ',' pass ',' print ' , 'Raise', 'Return', 'Try', 'while', 'with', 'yield']

Python 3.8.0 ['False', 'None', 'True', 'и', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', ' del ',' elif ',' else ',' кроме ',' finally ',' for ',' from ',' global ',' if ',' import ',' in ',' is ',' lambda ' , 'нелокальный', 'not', 'или', 'pass', 'повысить', 'return', 'try', 'while', 'with', 'yield']

Типы данных

Текст

ул - х = "Привет, мир"

числовой

int, float, комплекс

Последовательность

список, кортеж, диапазон

картографирование

ДИКТ

Устанавливать

набор, морозил

логический

BOOL

двоичный

байты, bytearray, просмотр памяти

Математические операторы

**

экспонент 4 ** 2 = 16

%

Modulus / Остаток 43% 5 = 3

//

Целочисленное деление 11 // 5 = 2

/

разделение 11/5 = 2,2

*

умножение 3 * 3 = 9

-

Вычитание 8 - 3 = 5

+

прибавление 2 + 2 = 4

==

Равно

!знак равно

Не равно

<

Меньше, чем

>

Больше чем

<знак равно

Меньше или равно

>знак равно

Больше или равно

Комментарии

#

Может использоваться в начале строки или изнутри строки до конца строки

Анализ сети с помощью Python

Используйте NMAP со сканером портов

$ pip install 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' ]. состояние ()
nmScan ['10 .1.0.0' ]. all_protocols ()
nmScan ['10 .1.0.0 '] [' tcp ']. keys () # Результаты - [80, 25, 22, 135]
nmScan ['10 .1.0.0 ']. has_tcp (25) # Результат True / False
nmScan ['10 .1.0.0 ']. has_tcp (21) # Результат False / True

Библиотека dnspython

Установка

$ pip install dnspython

Основной DNS-запрос

импорт дн.резольвер
name = 'google.com'
для qtype в «A», «AAAA», «MX», «NS», «TXT», «SOA»:
answer = dns.resolver.query (name, qtype, rise_on_no_answer = False)
если answer.rrset не является None:
печать (answer.rrset)

Получить цель MX и имя предпочтения

импорт дн.резольвер

answers = dns.resolver.query ('dnspython.org', 'MX')
для rdata в ответах:
print («Хост», rdata.exchange, «имеет предпочтения», rdata.preference)

Socket Module (интерфейс API Беркли)

Основные функции и методы

socket () • ind () • listen () • accept () • connect () • connect_ex () • send () • recv () • close ()

Типы сокетов

SOCK_STREAM

Для протоколов TCP • Надежная передача • Последовательность пакетов • Ориентированный на соединение • Двунаправленный

SOCK_DGRAM

Для протоколов UDP • Ненадежная передача • Нет последовательности пакетов • Без установления соединения (UDP) • Не двунаправленный

Создание сокетов

import socket # Импортирует метод сокета
socket.socket () # Функция, которая создает сокет
носок = сокет. сокет (семейство сокетов, тип сокета, протокол = значение)

Семья Сокетов

AF_UNIX или AF_INET

Тип сокета

SOCK_STREAM или SOCK_DGRAM для TCP & UDP соответственно

Например, TCP - UDP2 = сокет. сокет (socket.AF_INET, socket.SOCK_DGRAM)

Например, UDP - TCP2 = сокет. сокет (socket.AF_INET, socket.SOCK_STREAM)

Метод клиентского сокета

Connect ()

Метод сокета сервера

bind () • прослушать (отставание) • принять ()

Методы сокетов TCP

s.recv () # Получение пакетов TCP
s.send () # Отправка TCP-пакетов

Методы сокета UDP

s.recvfrom () # Получает пакеты UDP
s.sendto () # Передает пакеты UDP

Больше методов сокетов

близко()

Закройте разъем сокета

gethostname ()

Возвращает строку, которая включает имя хоста текущего ПК

gethostbyname ()

Возвращает строку, которая включает имя хоста и IP-адрес текущего ПК

Слушать()

Настройка и запуск прослушивателя TCP

связывания ()

Присоедините (имя хоста, номер порта) к сокету

принимаем ()

Ожидание TCP-соединения с клиентом

Connect ()

Инициировать соединение с сервером TCP

Методы сокетов TCP
mysocket.accept ()

Возвращает кортеж с удаленным адресом, который подключился

mysocket.bind (адрес)

Прикрепить указанный локальный адрес к сокету

mysocket.connect (адрес)

Данные, отправленные через сокет, присваиваются данному удаленному адресу

mysocket.getpeername ()

Возвращает удаленный адрес, к которому подключен сокет

mysocket.getsockname ()

Возвращает адрес собственной локальной конечной точки сокета

mysocket.sendto (данные, адрес)

Принудительно установить пакет данных на определенный удаленный адрес

Блокировка сокета

setblocking (1)

Блок настройки

setblocking (0)

Удалить / удалить блок

Получить номер порта, используя доменное имя

гнездо для импорта
socket.getservbyname ('доменное имя')

Проверьте поддержку IPV6

гнездо для импорта
socket.has_ipv6 # Ответ - ИСТИНА или ЛОЖЬ

getaddrinfo () - привязывает сервер к порту

из сокета импорт getaddrinfo
getaddrinfo (Нет, 'FTP', 0, сокет.SOCK_STREAM, 0, сокет.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)
хост = socket.gethostname ()
Порт = 1111
MyServer.bind ((хост, порт)) # replace MyServer и мой клиент с покорными IP
MyServer.слушать (5)
пока верно:
мой клиент,адр = myserver.accept ()
Распечатать("Подключено к {str (addr)}")
мой клиент.отправить (msg.encode ("ASCII"))
мой клиент.близко()

Пример сокета на стороне клиента с комментариями

# импортировать библиотеку сокетов
гнездо для импорта

# создать объект сокета
s = socket.socket ()
Распечатать ("Сокет создан")

# зарезервировать порт на компьютере, который может быть любым
порт = 1111

# привязка к порту
# пустая строка в поле IP вместо IP заставляет сервер слушать запросы
# приходя с других компьютеров в сети
s.bind (('', порт))
Распечатать ("сокет привязан к% s" % (Порт))

# перевести сокет в режим прослушивания
s.listen (5)
Распечатать ("сокет слушает")

# цикл, пока пользователь не прервет его или не произойдет ошибка
пока верно:

# Установить связь с клиентом.
c, addr = s.accept ()
print ('Получил соединение от', адрес)

# отправить клиенту сообщение с благодарностью.
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, name):
команды = []
command.append ('vlan' + vlan)
command.append ('имя' + имя)

команды возврата

>>> def push_commands (устройство, команды):
печать («Подключение к устройству: + устройство»)
для cmd в командах:
print ('Команда отправки:' + cmd)

Создайте VLAN в нескольких коммутаторах, используя скрипт Python

>>>для vlan во vlans:
id = vlan.get ('id')
name = vlan.get ('name')
печать ( '\ п')
распечатать ('Настроить VLAN:' + id)
command = get_commands (id, name)
для устройства в устройствах:
push_commands (устройство, команды)
печать ( '\ п')

Цитирование: https://www.oreilly.com/library/view/network-programmability-and/9781491931240/ch04.html

Отключить интерфейс маршрутизатора с помощью команды python

>>> из push import push_commands
устройство = 'router2'
команды = ['интерфейс Eth0 / 1', 'выключение']
push_commands (устройство, команды)

Модули разбора

argparse ()

Модуль argparse позволяет легко создавать удобные интерфейсы командной строки. Программа определяет, какие аргументы она требует, и argparse выяснит, как ее проанализировать из sys.argv.

Создание парсера

>>> parser = argparse.ArgumentParser (description = 'Обработать несколько целых чисел.')

Добавление аргументов

>>> parser.add_argument ('целые числа', metavar = 'N', тип = int, nargs = '+',
... help = 'целое число для аккумулятора')
>>> parser.add_argument ('- сумма', dest = 'накапливать', action = 'store_const',
... const = сумма, по умолчанию = макс,
... help = 'сумма целых чисел (по умолчанию: найти максимум)')

Разбор аргументов

>>> parser.parse_args (['- sum', '7', '-1', '42'])
Пространство имен (накапливать =, целые числа = [7, -1, 42])
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me

About the author

Leave a Reply

Your email address will not be published. Required fields are marked *

38 + = 39