Todas las tablas proporcionadas en las hojas de trucos también se presentan en las tablas a continuación, que son fáciles de copiar y pegar..
los Hoja de trucos de programación de Python Network cubre:
- Módulos de instalación comunes requeridos: PIP e IDLE
- Principales bibliotecas de programación en red de Python
- Análisis forense de red: bibliotecas y scripts de Python necesarios
- Palabras clave de Python
- Tipos de datos, operadores matemáticos
- Análisis de red con Python
- La biblioteca dnspython
- Módulo de socket (interfaz API Berkley)
- Tipos de sockets, creación de sockets
- Ejemplos de enchufes
- Ejemplos de guiones
- Analizando Módulos
Ver o descargar la imagen JPG de Cheat Sheet
Haga clic derecho en la imagen a continuación para guardar el archivo JPG (1987 ancho x 2362 alto en píxeles), o haga clic aquí para abrirlo en una nueva pestaña del navegador. Una vez que la imagen se abre en una nueva ventana, es posible que deba hacer clic en la imagen para ampliarla y ver el archivo JPEG de tamaño completo.
Ver o descargar el archivo PDF de la hoja de trucos
Descargue el archivo PDF de la hoja de trucos aquí. Cuando se abre en una nueva pestaña del navegador, simplemente haga clic derecho en el PDF y vaya al menú de descarga.
¿Qué se incluye en esta hoja de trucos?
Las siguientes categorías y artículos se han incluido en la hoja de trucos:
Módulos de instalación comunes requeridos: PIP e IDLE
PIP (Instalador de paquetes Python) | $ sudo apt-get install python-pip |
IDLE (entorno integrado de desarrollo y aprendizaje) | $ sudo apt-get install inactivo |
Principales bibliotecas de programación en red de Python
Django | Marco web Python de alto nivel para un desarrollo rápido y pragmático |
pycos (anteriormente asyncoro) | Marco de Python para programación asincrónica, concurrente, de red, distribuida y computación distribuida |
Diesel | Una API limpia para escribir clientes y servidores de red. TCP y UDP compatibles. Paquetes de clientes para HTTP, DNS, Redis, Riak y MongoDB. |
Pulsar | Manera fácil de construir programas de red escalables |
Retorcido | Marco basado en eventos para aplicaciones de Internet: clientes y servidores HTTP, SSHv2 y Telnet, IRC, XMPP, IMAPv4, POP3, SMTP, IMAPv4, POP3, SMTP, etc.. |
NAPALM | Capa de abstracción de automatización y programabilidad de red con soporte de múltiples proveedores: para tratar con proveedores de dispositivos |
gentil | Una biblioteca de red de Python basada en la rutina que usa greenlet para proporcionar una API síncrona de alto nivel en la parte superior del bucle de eventos libev o libuv |
Apio | Cola de tareas asíncrona / cola de trabajos basada en el paso de mensajes distribuidos |
Análisis forense de red: bibliotecas y scripts de Python necesarios
Herramienta EDDIE | Sistema y monitoreo de red, seguridad y agente de análisis de rendimiento para python |
pypcap | Herramienta de captura de paquetes pequeños basada en python y pcap |
Paramiko | Implementación del protocolo SSHv2, que proporciona funcionalidad de cliente y servidor. |
pipa | Instalador de paquetes para python |
El índice del paquete Python (PyPI) | Repositorio de software para Python |
Palabras clave de Python
>>> palabra clave de importación >>> print (keyword.kwlist) |
Python 2.7.15+ [‘y’, ‘como’, ‘afirmar’, ‘romper’, ‘clase’, ‘continuar’, ‘def’, ‘del’, ‘elif’, ‘más’, ‘excepto’, ‘exec’, ‘ finalmente ‘,’ for ‘,’ from ‘,’ global ‘,’ if ‘,’ import ‘,’ in ‘,’ is ‘,’ lambda ‘,’ not ‘,’ or ‘,’ pass ‘,’ print ‘ , ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’] |
Python 3.8.0 [‘Falso’, ‘Ninguno’, ‘Verdadero’, ‘y’, ‘como’, ‘afirmar’, ‘asíncrono’, ‘esperar’, ‘romper’, ‘clase’, ‘continuar’, ‘def’, ‘ del ‘,’ elif ‘,’ else ‘,’ excepto ‘,’ finalmente ‘,’ for ‘,’ from ‘,’ global ‘,’ if ‘,’ import ‘,’ in ‘,’ is ‘,’ lambda ‘ , ‘nonlocal’, ‘not’, ‘o’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’] |
Tipos de datos
Texto | str – x = "Hola Mundo" |
Numérico | int, flotante, complejo |
Secuencia | lista, tupla, rango |
Cartografía | dict |
Conjunto | conjunto, congelado |
Booleano | bool |
Binario | bytes, bytearray, memoryview |
Operadores matemáticos
** ** | Exponente 4 ** 2 = 16 |
% | Módulo / resto 43% 5 = 3 |
// | División entera 11 // 5 = 2 |
/ / | División 11/5 = 2.2 |
* * | Multiplicación 3 * 3 = 9 |
– | Sustracción 8 – 3 = 5 |
+ | Adición 2 + 2 = 4 |
== | Igual a |
!= | No igual a |
< | Menos que |
> | Mas grande que |
<= | Menos que o igual a |
>= | Mayor qué o igual a |
Comentarios
# # | Se puede usar al comienzo de una línea o desde dentro de una línea hasta el final de la línea |
Análisis de red con Python
Use NMAP con escáner de puertos | $ pip install python-nmap |
Comandos para ejecutar la exploración NMAP | importar nmap nmScan = nmap.PortScanner () nmScan.scan (’10 .1.0.0 ‘, ’25 -443’) |
Comandos NMAP utilizados con python | nmScan.scaninfo () # {‘tcp’: {‘services’: ‘25 -80 ’, ‘method’: ‘connect’}} nmScan.all_hosts () nmScan [’10 .1.0.0 ‘]. hostname () nmScan [’10 .1.0.0 ‘]. state () nmScan [’10 .1.0.0 ‘]. all_protocols () nmScan [’10 .1.0.0 ‘] [‘ tcp ‘]. keys () # Resultados – [80, 25, 22, 135] nmScan [’10 .1.0.0 ‘]. has_tcp (25) # Resultado Verdadero / Falso nmScan [’10 .1.0.0 ‘]. has_tcp (21) # Resultado Falso / Verdadero |
La biblioteca dnspython
Instalación | $ pip install dnspython |
Consulta básica de DNS | importar dns.resolver nombre = ‘google.com’ para qtype en ‘A’, ‘AAAA’, ‘MX’, ‘NS’, ‘TXT’, ‘SOA’: answer = dns.resolver.query (nombre, qtype, raise_on_no_answer = False) si answer.rrset no es Ninguno: print (answer.rrset) |
Obtenga el objetivo MX y la preferencia de nombre | importar dns.resolver respuestas = dns.resolver.query (‘dnspython.org’, ‘MX’) |
Módulo de socket (interfaz API Berkley)
Funciones primarias y métodos | socket () • ind () • escuchar () • aceptar () • conectar () • connect_ex () • enviar () • recv () • cerrar () |
Tipos de enchufes
SOCK_STREAM | Para protocolos TCP • Transmisión confiable • Secuencia de paquetes • Orientada a la conexión • Bidireccional |
SOCK_DGRAM | Para protocolos UDP • Transmisión no confiable • Sin secuencia de paquetes • Sin conexión (UDP) • No bidireccional |
Crear sockets
import socket # Importa el método de socket socket.socket () # Función que crea el socket | |
calcetín = zócalo. socket (familia de socket, tipo de socket, protocolo = valor) | |
Familia de enchufes | AF_UNIX o AF_INET |
Tipo de enchufe | SOCK_STREAM o SOCK_DGRAM para TCP & UDP respectivamente • p.ej. TCP – UDP2 = socket. socket (socket.AF_INET, socket.SOCK_DGRAM) • p.ej. UDP – TCP2 = socket. socket (socket.AF_INET, socket.SOCK_STREAM) |
Método de socket del cliente | conectar() |
Método de socket del servidor | bind () • escuchar (backlog) • aceptar () |
Métodos de socket TCP | s.recv () # Recibe paquetes TCP s.send () #Enviar paquetes TCP |
Métodos de socket UDP | s.recvfrom () # Recibe paquetes UDP s.sendto () # Transmite paquetes UDP |
Más métodos de socket | |
cerca() | Cerrar la conexión del zócalo |
gethostname () | Devuelve una cadena que incluye el nombre de host de la PC actual |
gethostbyname () | Devuelve una cadena que incluye el nombre de host y la dirección IP de la PC actual |
escucha() | Configurar e iniciar escucha TCP |
enlazar() | Adjunte (nombre de host, número de puerto) al zócalo |
aceptar() | Conexión de cliente TCP esperar |
conectar() | Iniciar la conexión del servidor TCP |
Métodos de socket TCP | |
mysocket.accept () | Devuelve una tupla con la dirección remota que se ha conectado |
mysocket.bind (dirección) | Adjunte la dirección local especificada al socket |
mysocket.connect (dirección) | Los datos enviados a través del socket se asignan a la dirección remota dada |
mysocket.getpeername () | Devuelve la dirección remota donde está conectado el socket |
mysocket.getsockname () | Devuelve la dirección del propio punto final local del socket
|
mysocket.sendto (datos, dirección) | Forzar un paquete de datos a una dirección remota específica |
Bloqueo del zócalo | |
bloqueo (1) | Bloque de configuración |
bloqueo de conjunto (0) | Eliminar / desinstalar bloque |
Obtenga el número de puerto usando el nombre de dominio | zócalo de importación socket.getservbyname (‘nombre de dominio’) |
Verifique el soporte para IPV6 | zócalo de importación socket.has_ipv6 # La respuesta es VERDADERA o FALSA |
getaddrinfo () – Vincula el servidor a un puerto | desde socket import getaddrinfo getaddrinfo (Ninguno, ‘FTP’, 0, socket.SOCK_STREAM, 0, socket.AI_PASSIVE) [(2, 1, 6, ”, (‘0.0.0.0’, 21)), (10, 1, 6, ”, (‘::’, 21, 0, 0))] |
Ejemplos de enchufes
Ejemplo de socket del lado del cliente |
zócalo de importación s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) host = socket.gethostname () puerto = 1111 myserver.bind ((host, puerto)) # reemplazar myserver y mi cliente con IP repsctive myserver.escuchar (5) mientras cierto: mi cliente,addr = myserver.accept () impresión("Conectado a {str (addr)}") mi cliente.enviar (msg.encode ("ascii")) mi cliente.cerca() |
Ejemplo de socket del lado del cliente con comentarios |
# importar la biblioteca de sockets zócalo de importación # crear un objeto de socket # reserva un puerto en la computadora que puede ser cualquier cosa # vincularse al puerto # convertir el socket en modo de escucha # bucle hasta que el usuario lo interrumpa o se produzca un error # Establecer conexión con el cliente. # enviar un mensaje de agradecimiento al cliente. # Cerrar la conexión |
Ejemplos de guiones
Crear lista de dispositivos |
>>>dispositivos = [‘SW1’, ‘SW2’, ‘SW3’] |
Crear lista de diccionarios VLAN |
vlans = [{‘id’: ‘100’, ‘name’: ‘staff’}, {‘id’: ‘200’, ‘name’: ‘VOICE’}, {‘id’: ‘300’, ‘name’: ‘wireless’}] |
Escribir funciones para recopilar comandos y enviarlos a la red |
>>>def get_commands (vlan, nombre): comandos = [] command.append (‘vlan’ + vlan) command.append (‘nombre’ + nombre) comandos de retorno >>> def push_commands (dispositivo, comandos): |
Cree VLAN en varios conmutadores con el script de Python |
>>>para vlan en vlans: id = vlan.get (‘id’) nombre = vlan.get (‘nombre’) print (‘\ n’) print (‘Configurar VLAN:’ + id) comandos = get_commands (id, name) para dispositivo en dispositivos: push_commands (dispositivo, comandos) print (‘\ n’) |
Cita: https://www.oreilly.com/library/view/network-programmability-and/9781491931240/ch04.html |
Deshabilite la interfaz del enrutador usando el comando python |
>>> desde push import push_commands dispositivo = ‘enrutador2’ comandos = [‘interfaz Eth0 / 1’, ‘apagado’] push_commands (dispositivo, comandos) |
Analizando Módulos
argparse () | El módulo argparse facilita la escritura de interfaces de línea de comandos fáciles de usar. El programa define qué argumentos requiere, y argparse descubrirá cómo analizarlos desde sys.argv |
Crear un analizador | >>> parser = argparse.ArgumentParser (description = ‘Procesar algunos enteros’) |
Agregar argumentos | >>> parser.add_argument (‘integers’, metavar = ‘N’, type = int, nargs = ‘+’, … ayuda = ‘un entero para el acumulador’) >>> parser.add_argument (‘- sum’, dest = ‘acumular’, action = ‘store_const’, … const = sum, default = max, … ayuda = ‘suma los enteros (por defecto: encuentra el máximo)’) |
Analizando argumentos | >>> parser.parse_args ([‘- sum’, ‘7’, ‘-1′, ’42’]) Espacio de nombres (acumular =, enteros = [7, -1, 42]) |
Lo siento, no puedo proporcionar comentarios en un idioma específico sin saber cuál es. Por favor, especifique el idioma en el que desea el comentario.