Bien, bienvenidos a la clase de hoy que va a tratar el manejo de datos. manejo de datos puede que os suene algo raro pero la idea básica del manejo de datos es que, teniendo los datos en un formato, quieres mostrarlos de forma diferente es algo que pasa a menudo. No hablo de algo similar a convertir imágenes sino que es posible que tengas un archivo de texto o un log y lo que quieres es verlo en otro formato, en un gráfico, o quieres ver estadísticas sobre esos datos, cualquier cosa que coja un conjunto de datos y los represente de otra forma; eso es lo que llamaría manejo de datos. Hemos visto ya algunos ejemplos de este tipo de manejo de datos con anterioridad en este semestre básicamente cualquier uso de un operador sobre pipe que ordene o coja la salida de un programa y la introduzca en otro programa, esto es manejo de datos en cierta manera. Lo que vamos a hacer en esta clase es echar un vistazo a algunas formas elegantes de manejar datos y algunas muy útiles. Para llevar a cabo cualquier manejo de datos lo que se necesita es una fuente de datos sobre la que operar en primer lugar y hay un gran número de buenas muestras de ello. Damos algunos ejemplos en la sección de ejercicios del apartado de notas de la clase de hoy En esta en particular voy a utilizar un log del sistema. Tengo un servidor ejecutándose en algún lugar de Holanda porque parecía algo razonable en su momento y, en ese servidor corre un daemon de logging normal que viene con el sistema Deeb. Es un tipo estándar de mecanismo de logging en Linux y hay un comando llamado journalctl en los sistemas Linux que te permiten ver dicho log. Así que lo que voy a hacer es algunas modificaciones sobre dicho log para ver si puedo sacar algo interesante de él. Veréis que si ejecuto el comando el resultado es un montón de datos porque es un log que tiene hay un montón de cosas en él, un montón de cosas que han pasado en el servidor y que se remontan a enero y los logs van incluso más atras hay mucha información así que lo primero que vamos a hacer es tratar de limitarla para que veáis sólo parte del contenido. El comando grep es aquí el más adecuado así que vamos a pasarlo a través del pipe y vamos a llamar a SSH. Sobre SSH no hemos hablado todavía pero es una manera de acceder a ordenadores de forma remota usando la línea de comandos y en particular lo que pasa cuando pones un servidor público en Internet es que un montón de gente de todo el mundo intenta conectar, loguearse y tomar el servidor. Si quieres ver lo que esta gente intenta hacer y demás, voy a hacer un grep por SSH y veréis como rápidamente se genera un montón de contenido, al menos en teoría. Va a ir lento ... ahí está. Esto genera toneladas y toneladas de contenido y es muy difícil incluso ver qué está pasando, así que vamos a observar sólo los nombres de usuario con los que la gente intenta loguear en mi servidor, así podéis ver que en algunas de estas líneas pone desconectado desconectado por usuario inválido y un nombre de usuario. Sólo quiero quedarme con esas líneas, es lo único que me interesa, voy a hacer un cambio más aquí que, si pensáis en cómo funciona esta pipeline, si hago esto aquí conectado de esta manera la pipeline del final lo que hará es que mandará entero el archivo de log a traves de la red a mi máquina y localmente ejecutará grep para mostrar sólo las líneas que contienen ssh y localmente las filtrará todavía más. Puede parecer un poco ineficiente porque no me importan muchas de estas líneas y el site remoto también está ejecutando una shell, así que lo que puedo hacer es ejecutar el comando entero en el servidor así que lo que os digo, el comando SSH que quiero ejecutar en el servidor es esta pipeline de tres elementos y lo que obtenga como resultado lo quiero mandar a less ya que lo que esta vez hace bien es el mismo filtrado que hicimos antes pero en el lado del servidor y este sólo me va a mandar aquellas líneas que me interesan para que cuando las mande localmente a través del programa llamada less ... less es un paginador del que veréis algunos ejemplos, de hecho ya habéis visto algunos, por ejemplo al escribir man y algún otro comando que se abre en un paginador. Un paginador es una forma práctica de coger un extracto largo de cierto contenido y adaptarlo a la ventana de tu terminal y permitirte avanzar, retroceder y navegar por él para que no avance por entero por la pantalla, así que, si lo ejecuto va a llevar un tiempo porque tiene que analizar un montón de archivos de log, en particular grep está rellenando un buffer lo que resulta ser relativamente de poca ayuda Podría hacer, veamos si esto es más útil, ¿por qué no quiere hacerme el favor? bien, voy a hacer trampa un poco, no me hagáis caso quizá la red va muy lenta, son dos posibles razones, por suerte hay arreglo porque antes he ejecutado el siguiente comando y lo que este comando hace es coger la salida de este otro comando y la anexa a un archivo local, en mi computadora, bien, así que ejecuto esto cuando llego a mi oficina y así lo que esto hizo fue descargar todos los logs de SSH que contenían desconectado de, así que ahora los tengo en local lo cual es muy útil. Aquí está, no hay razones para que abra el log entero cada vez porque sé que ese patrón del inicio es lo que me interesa, por lo que echamos un vistazo al SSH punto log y veréis que hay montones y montones de líneas en las que aparece desconectado de usuario no válido usuarios autenticados, etc. Bien, aquíe están las líneas sobre las que tenemos que trabajar lo que también significa que más adelante no tenemos que pasar por completo por este proceso SSH, simplemente hacemos cat sobre este archivo y operamos sobre él directamente puedo mostrar este paginador así que si hago cat s al SSH punto log y lo mando a less, me da una página por la que puedo retroceder y avanzar quizá hacer esto un poco más pequeño para poder recorrer el archivo, estropear el archivo y puedo hacer esto que son básicamente atajos de teclado de vim de manera que control ] para avanzar, control D para retroceder y q para salir. Hay todavía un montón de contenido y estas líneas contienen un montón de basura en la que no estoy interesado, lo que realmente quiero ver es cuáles son estos nombres de usuario y esta es la herramienta que vamos a empezar a utilizar, llamada sent y que es un editor de flujo que está modificado o es una modificación de un programa anterior llamado edie que era un editor muy raro que ninguno de vosotros probablemente querrá utilizar, si, oh, tsp es el nombre de la computadora remota a la que estoy conectando como he dicho un editor de flujo y básicamente lo que te permite es cambiar el contenido de un flujo, puedes pensar que es un poco como hacer cambios pero en realidad es un completo lenguaje de programación