Fundamentos de Linux, Redes y Programación AWK
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,49 KB
Práctica 1. Introducción a Linux
Comandos básicos de Linux
- pwd: muestra el directorio actual de trabajo.
- ls: lista el contenido del documento actual. Si se pasa el argumento "-l", muestra información extendida.
- chmod: cambia los permisos de un fichero.
- Ejemplo:
chmod 777 fichero.c
→ Establecería el fichero con permisosrwxrwxrwx
(dueño, grupo y otros).
- Ejemplo:
- cd: cambia de directorio.
- mkdir: crea un directorio.
- mv: mueve ficheros.
- rm: elimina directorios.
- cat/more: muestra el contenido de un fichero por la salida estándar.
- cp: copia ficheros y directorios.
- ps: lista los procesos activos del sistema operativo.
- kill: mata un proceso dada su PID.
Pipes y redirecciones
proceso1 | proceso2
: redirecciona la salida delproceso1
a la entrada deproceso2
.proceso1 > fichero
: redirecciona la salida delproceso1
y escribe su resultado en un fichero.
Práctica 2. Servicios de Aplicación
Algoritmo de codificación UUE
- Los bytes del fichero binario se cogen y se procesan siempre en grupos de 3 en 3 bytes (nunca puede ser otro número).
- De cada grupo de 3 bytes se extraen cuatro grupos de 6 bits de forma ordenada, de izquierda a derecha, desde el primer hasta el tercer byte.
- A cada grupo de 6 bits se le añaden dos bits "0" y se crea un nuevo byte (el grupo de 6 bits se empaqueta "a la derecha" del byte). De cada nuevo byte se tiene un carácter ASCII.
- Los caracteres ASCII definitivos tienen que estar comprendidos entre los caracteres ASCII permitidos. A cada byte anterior se le suma 32. De este modo se consigue que el valor de todos los caracteres generados esté comprendido en el margen 32-96. Si el byte es
0x00
, se usa directamente el carácter ASCII0x96
(`). Esto debe tenerse en cuenta al decodificar.
Uso del algoritmo en el correo electrónico
Al codificar un fichero binario para enviarlo por correo, se obtiene algo similar a esto:
begin nombreFichero.ext
M
El resultado está formado por una cabecera (begin
+ nombre del archivo), el tráiler (una sola línea formada por "end
" que indica el final del fichero), y las líneas que transmiten información, cuyo primer carácter (contador de octetos) indica el número de bytes originales codificados en dicha línea, sumado en 32 unidades para hacerlo compatible con ASCII.
Algoritmo de decodificación UUE
- Se van cogiendo grupos de 4 caracteres.
- Se resta 32 a cada carácter.
- Se eliminan los dos ceros iniciales de cada grupo.
- Se agrupan los bits en 3 grupos de 8 bits, donde cada grupo se corresponde a un byte de la secuencia original.
Práctica 3. Conmutación Store & Forward
Conmutación de mensajes
En la conmutación de mensajes, al mensaje m
se le añade siempre una cabecera H
y el conjunto se envía al mismo tiempo formando un único bloque de bytes.
Conmutación de paquetes
En la conmutación de paquetes, al mensaje m
se divide en varios paquetes de tamaño p
. A cada paquete se le añade siempre una cabecera H
y cada conjunto cabecera-paquete H+p
se envía secuencialmente formando bloques de bytes más pequeños.
Conmutación de paquetes de longitud fija
Práctica 4. El lenguaje de programación AWK
Ejecución de AWK
awk -F, -f fichero.awk captura.txt
-F
: indica el separador de campos, en este caso, comas.-f
: fichero con el código AWK a ejecutar.
Variables internas
$0
representa toda la fila actual.$1
representa el valor de la columna 1 de la fila actual.$n
representa el valor de la columnan
de la fila actual.
Ejemplos
Ejemplo 1
($8=="ICMP") { //Acción con patrón, se ejecuta solo para las líneas que cumplen la condición
print "Resultados del patrón ICMP";
print "el número de línea es: ",NR;
print "captura numero: ",$1;
}
Ejemplo 2
/ARP/ //Patrón sin acción, muestra las filas que coinciden
{ //Acción sin patrón, se ejecuta para todas las líneas
contador=contador+1;
print "Estamos en la línea ", contador;
}
Ejemplo 3
{t_final = $2}
($8 != "ICMP" ) {contador= contador - 1}
BEGIN { //Acción que se ejecuta al comienzo de un archivo, antes de procesar ninguna línea
print "Comienza ejemplo 6";
contador=8; # Inicio variable contador a 8
}
END { //Acción que se ejecuta al final del archivo, una vez procesadas todas las líneas
print "Numero tramas capturadas: " NR;
print "Instante de captura de la última trama:", t_final
}
Ejemplo 4
{ protocolo[$4] = protocolo[$4] + 1; }
END {
for (nombre_protocolo in protocolo) {
if(nombre_protocolo!="ARP")
print nombre_protocolo, protocolo[nombre_protocolo]
}
}