2:30:28
2024-08-23 13:13:41
Visit the Programación Bash course recordings page
WEBVTT--> A ver, mira, lo voy a dejar de compartir y vuelve a compartir ya. --> Ok. --> Ya lo volví a compartir. --> Ok. --> ¿Sí? --> Ok. --> Pero ¿sí puedo entrar aquí en Internet? --> Sí, abre tu navegador acá. --> Sí tienes tu navegador. --> Sí, sí. --> Mad potencia, ¿verdad? --> Sí, mad potencia símbolo y ahí te va a aparecer. --> ¿Te aparece? --> A ver. --> ¿Te aparece otra cosa? A ver. --> A ver, voy a ver tu máquina que es como lo has puesto. --> Creo que lo he cosido. --> Potencia, potencia. --> Ajá. --> Ahí está, ¿ves? --> Sí. --> Sí, sí. --> Control Shift V también puedes, te funciona. --> Te debería funcionar, Control Shift V. --> Bueno, ya está. --> Ya. --> Ahora es más dólar, has puesto más S, es más dólar. --> Después del 0 a 9. --> Después del 0 a 9. --> Has puesto más S y es más dólar. --> Ah, más dólar, sí. --> Sí, sí. --> Ahí está. --> Ahí. --> ¿Y ya? --> Sí, creo que ya. --> Sí, yo creo que ya. --> Es que no hay ninguna... --> Sí, ahí, pruébalo, pruébalo. --> Sí, aquí me falta. --> Y aquí... --> Ten que estar. --> Cápilla. --> Ajá. --> A ver. --> X, perfecto. --> Muy bien, ahí está, perfecto. --> Ya, ahora presiona una R. --> Ah, listo. --> Ya funciona. --> ¿Perdón? --> No, ya funciona. --> Sí, ya. --> Muy bien. --> Ya quedó. --> Sí, sí, ya quedó, ya quedó. --> Seguimos entonces, seguimos. --> Entonces, ya también con este ejercicio hemos aprendido a ver las comparaciones con patrones, ¿no? --> Ajá. --> ¿Ya? --> Bien. --> A ver, ¿con cuál otro nos vamos ahora? --> Ya, una, una, con condicional. --> Este... --> Verifica si un año es viciesto. --> Ok. --> ¿Sabes cuándo un año es viciesto, no? --> Ehh... --> Cuando... --> ¿Qué hacemos? --> Da cuatro años. --> Exacto. --> Si es que es cada cuatro años significa si es que es divisible entre cuatro. --> Ajá. --> Entonces, si es divisible entre cuatro, es este año es viciesto. --> Pero también hay una exclusión cada cien años, ¿ya? --> Cada cien años no es viciesto, ¿ya? --> Entonces, no debe ser divisible entre cien, ¿sí? --> Ok. --> Y si... --> O sea, no debe ser divisible entre cien, pero entre cien tenemos el cuatrocientos. --> Pero cada cuatrocientos años también es viciesto. --> O sea, hay tres condiciones. --> ¿Me dejo entender? --> Primera condición. --> Cada cuatro años, divisible entre cuatro. --> No debe ser divisible entre cien, porque cada cien años no es viciesto. --> Salvo, salvo cada cuatrocientos años. --> Cada cuatrocientos años sí es viciesto. --> A ver, ¿cómo lo haces? --> Ay, no sé. --> Ya, yo lo hago eso. --> Yo lo hago eso. --> María mucho, ¿no? --> Eh... --> Bueno, dice lo que se me ocurre. --> O sea, por lo que más o menos me dijiste, tendríamos que... --> Es que no sé si tendríamos que poner si el residuo es cero --> cuando se hace la división entre cuatro, cien y cuatrocientos años. --> No te preocupes. --> Ya, yo lo voy a hacer y eso queda aclarado. --> Vamos. --> Porque también es un ejercicio corto. --> No es muy grande. --> Entonces vamos a hacer ejercicio año viciesto. --> Bien más. --> Ya. --> Vamos a poner como comentario cuándo es un año viciesto. --> Cada cuatro años. --> ¿Qué significa cada cuatro años? --> Debe ser divisible entre cuatro. --> ¿Cierto? --> La segunda condición. --> La segunda condición es de que cada cien años no es... --> Cada cien años... --> No es viciesto. --> Salvo cada cuatrocientos años. --> Es decir, pasa cien años, no es. --> Pasa doscientos años, no es. --> Pasa trescientos años, no es. --> Pasa cuatrocientos años, sí es. --> Pasa quinientos años, no es. --> ¿Ya? --> Sí, me dejó entender, ¿verdad? --> Sí. --> Ya. --> Ahí tenemos las condiciones. --> Ponemos entonces read menos p introduce un año. --> Y lo vamos a leer la variable año. --> ¿Ya? --> Entonces acá empezamos. --> Nuestro primer acondicionado. --> Sí. --> Dólar. --> Y lo primero que tenemos que hacer es ver si es que es divisible entre cuatro o no. --> ¿Cierto? --> Entonces, si el resto de esta división es igual a cero. --> Vamos bien. --> ¿Vamos? --> O sea, puede ser viciesto. --> ¿Sí? --> Ahora tenemos que ver las otras condiciones. --> ¿Sí? --> Tenemos que ver que no sea divisible entre cien. --> ¿Verdad? --> Entonces, no tiene que ser divisible entre cien. --> Y para que no sea divisible entre cien, le ponemos not equal. --> Cero. --> O, o acuérdate que lo es, que se cumple el uno o el otro. --> Significaría como a no ser que, lo podemos leer así. --> De que el año sea divisible de cuatrocientos. --> Si es divisible entre cuatrocientos, sí es, sí es un año viciesto. --> Ya, entonces si cumple esto, acá sí decimos que es un año viciesto. --> Si no cumple, ya pues sabemos que. --> Termina este fin. --> Este, acá, si es que no cumple esa condición, tampoco es viciesto, ¿no? --> Y termina. --> Esto debería funcionar. --> Ya, entonces ya estamos poniendo todas las condiciones. --> Si es divisible entre cuatro, entonces posiblemente es viciesto. --> ¿Qué nos falta determinar? --> De que no sea divisible entre cien, pero sí divisible entre cuatrocientos. --> Para que sea viciesto. --> ¿Sí? --> Lo vamos a probar, a ver. --> Bash. --> Ah, no deje espacios, ¿no? --> Ah, bueno. --> El año cien. --> Uh, error en la línea nueve. --> Me faltó acá. --> Hay un doble. --> Sí, acá hay un doble, gracias. --> Y acá le vamos a poner el espacio. --> Ya, bien, ahora sí. --> Termina el año cien. --> No es viciesto, de hecho no puede ser viciesto. --> O sea, ahora dijimos que cada cien años no puede ser viciesto. --> Este, pero el año cuatrocientos debería ser viciesto. --> ¿Sí? --> Estamos bien. --> El año dos mil veinticuatro. --> Ah, qué gracioso soy. --> Dos mil veinticuatro. --> Es viciesto. --> Porque es múltiplo de cuatro, no es divisible entre cien. --> Entonces sí funciona, ¿verdad? --> Sí. --> Ya. --> Pruebalo por favor tú, pruébalo. --> Entonces acá era el uso del hecho de no es igual y el uso de la o. --> Perfecto. --> Bien, Laura, ¿salimos para almorzar? --> Sí. --> Ya, perfecto. --> Nos vemos entonces en una hora, ¿sí? --> Muy bien. --> Ya, listo, gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Gracias. --> Bueno, ¿sí? --> Bueno, en su declaración se ve que se está haciendo la geomunicación en la guerra --> próxima. --> Se ve clarísimo. --> Hay algunas personas que parecen que no, que se está usando por la libertad y --> la democracia de los ucranianos, pero en sus declaraciones hay un componente realista --> que se está usando por la libertad y la democracia de los ucranianos. --> ¿No? --> ¿No? --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> No. --> que afecta toda esa seguridad, y han de ir hasta las últimas consecuencias, como dirían ellos mismos, para intentar dejar a Rusia, --> porque ha ido al peligro, no en el plano exclusivamente militar, ya sabemos que en la guerra moderna, todo afecta al militar, --> pero en el sentido de sentido de lo militar, en el campo del batallo ucraniano parece que no está en peligro para Rusia, --> está en las cuestiones geopolíticas, entonces lo van a intentar hasta el último --> porque yo también lo pienso, y es que aunque el conflicto ucraniano puede estar tendente a una victoria rusa, --> el hecho de que siga vivo, el hecho de que se siga dando, es un peligro para Rusia, --> puede perder lógicamente, está vivo, y hasta que no se divida la victoria, habrá tension, y después también seguirá viviendo, --> nosotros siempre tenemos en mente ese punto, en el que finalmente la guerra de Ucrania, pero también saldrá un escenario digno de analizar, --> y seguramente también muy tensionado, pero mientras siga durando el conflicto ucraniano, habrá peligro para la federación, --> también ejercido como borrer, el perdón por el gallo, hablando de borrer, ¿saben los gallos del jardín? --> Borrer también se ha quejado hoy, aquí donde está todo el conflicto ucraniano, Borrer se ha quejado de que Rusia está expulsando a los terroristas de África, --> como dijimos el otro día, que ya habían quitado a los rusos junto con los maliense a las fuerzas terroristas del norte del país, --> seguramente los rusos están expulsando a los terroristas de África, y a los terroristas mayores, a los europeos también de África, --> y eso no le gusta a Borrer, ¿cómo le va a gustar a Borrer? Él no puede seguir exfoliando a la selva para tener el jardín arreglado, --> yo es que no entiendo, en su mente imperialista, colonialista, entiendo a Borrer, ¿cómo te va a gustar a Borrer? --> Que te directen a los que te guardan el corte, ¿cómo te va a gustar? --> Rusia está ocupando nuestro lugar y nos está poniendo en cobros, --> ahí está el tema, si nos está echando a Borrer, ¿ves cómo no hay problema de derechos? --> No es que Rusia, los derechos de los mexicanos, no, no, es que nos deja, ahí es donde está el tema, ahí es donde está el tema, --> Borrer, ahí no hay conflicto, se ve muy distante, que justo que no es justo, sin moral, Europa lleve 500 años exfoliando, --> junto con el Comienzo, ahí nos encontramos, claro, cosa correcta, clarísimo, clarísimo, --> si miramos lo que está pasando en otra parte de África, nos pondrá un poco nervioso, sobre todo lo que está pasando en Mario, --> Borrer, que nos han echado a nuestros propios, ahí en Brasil a los terroristas, han luchado contra las autoridades de Mario, --> cuando llegué a Bruselas, había italianos y franceses en Libia, no siempre vivían en armonía, no siempre cooperaban, pero se ve, --> ahora ya no hay europeos en Libia, solo hay turcos y rusos, eso es lo que les joda, --> y en la costa de Libia hay una cadena de bases militares, y no son bases militares europeas, sino turcas y rusas, --> hay, hay, hay, es que veis, no es tonto, algunos se dicen que es correcto, claro que va, --> lo que pasa es que el culto colonialista y imperialista están asistidos a los ámbulos, pero tonto no es, el culto nacionalista. --> Teníamos una idea ligeramente diferente de cómo debería gobernarse el Mediterráneo bajo su mandato, bajo el mandato de los europeos, --> sin que nadie interfiera en cómo ellos manejan la selva para tener cuidado del jardín, es que espectacular, --> por él yo digo, aunque sea distante en la confusión, en la moral, incluso sea bastante injusto en una persona a tener en cuenta, --> que está en manifestaciones no realizadas, ¿por qué lo digo? --> Bueno, porque también nosotros tenemos que escuchar a algunos imperialistas, a algunos franceses, --> y lo tenemos que escuchar para saber por dónde se coge, obviamente, --> y de lo poco se puede escuchar en Europa aquí políticos que, bueno, lo demás, la calle a Cala, el otro, esos son, --> son, bueno, halón, esos son halónes, por eso yo no sé si es que verdad, --> me interesaría en su mentira, no, pero a ver, por lo menos, es fácil entrarme, --> es que no estás lechando, cojones, no estás lechando huevos. --> Bueno, también John Kirby, John Kirby, el coordinador de las comunicaciones estratégicas --> del Consejo de Seguridad Nacional de la Casa Blanca, admitió que está discutiendo con cránea --> las perspectivas de aumentar la profundidad de los ataques contra el territorio ruso utilizando armas estadounidenses, --> es decir, se está decidiendo que ya está aprobado. --> Como sabe, el presidente estadounidense, Joe Biden, --> le ha autorizado a las autoridades de Kiev a utilizar unición estadounidense a través de la frontera --> para responder amenazas inminentes. --> Todavía que estamos teniendo este tipo de curiosas en el rollo --> para aumentar los ataques, ¿no? --> Algo que, tal de más o tal de menos, se terminará produciendo según la información. --> Ya lo dije el otro día, la información de que le han dado un visil de no vas a caracterizar --> algo también, un visil de gruñer, ¿no? --> Sobre todo que está financiado en... --> Así es que es evidente, porque cuando ese señor dice que estamos discutiendo --> es que ya está aprobado y es que ya ha sucedido. --> Yo hasta mañana lo he dicho, pero es que --> yo estoy plenamente consciente de lo que digo, además, de la ley. --> No hay nada más para decir. --> Pero soy muy consciente de lo que digo y me reafirmo en todo. --> Y lo que yo he dicho hasta mañana desde que la autoridad estadounidense --> es totalmente penílico, real, y además, --> poder dar un ejemplo, un ejemplo vivido. --> Los portavoces de la Casa Blanca y del Centro de los Periodistas. --> Venían, del Centro de los Periodistas, un hecho que pasó en Israel --> que fue una niña, una niña de Gaza, --> no sé si fue asesinada por los padres, --> y claro, el Centro de los Periodistas, que va al portavo de la Casa Blanca, --> le ha preguntado si sabía por qué habían muerto los padres de la niña, --> que si se estaba llevando la investigación o por su unión y demás. --> Él te pregunta, ¿no? --> Así es, esa pregunta del Centro de los Periodistas. --> ¿Y una vez? --> Sí, sí, sí, está investigando. --> Hasta 10 veces le preguntó lo mismo en distintas semanas. --> ¿Cómo va la investigación? --> Sí, sí, sí, eso ya está. --> ¿Lo ha investigado? --> Sí, sí, eso ya está, repito por ti. --> No, no, son las autoridades competentes. --> Sí, sí, la investigación va por vosotros. --> No, no, a ver si ya ha llamado. --> Ni mover un papel. --> 10 semanas. --> O 10 entrevistas que le hicieron a varios de los representantes, --> a los portavoces, como el del peinado de atrás, --> que son varios los portavoces que se producen. --> Sí, sí, sí. --> Sí. --> Listo, ¿continuamos? --> Sí. --> Perfecto. --> Un segundo, voy a compartir la pantalla. --> Confirme si veis la ventana. --> Bien, no vamos a hacer todas, porque hay muchas que son simples o que ya hemos visto y que las puedes realizar. --> Las que tienen algo interesante vamos a realizarlas. --> Vamos a hacer el ejercicio número 2, donde dice tabla de multiplicar. --> Imprime la tabla de multiplicar de un número dado. --> Si yo ingreso el número 3, una tabla de 3 por 3. --> Si ingreso 12, 12 por 12, pero mostrandolo como una celda, como celdas. --> Vamos a ver cómo hacemos eso. --> Eso es en la carpeta bucles. --> Tabla de multiplicar. --> Y empezamos a trabajar. --> Vamos a poner nuestro bin bash. --> Hecho, vamos a publicar tabla de multiplicar. --> Y vamos a hacer un tweet. --> Ingresa un número para calcular su tabla de multiplicar. --> Y lo vamos a llamar num. --> Acá hay una duda en la parte del echo, lo que va a seguir la tabla de multiplicar. --> Ya lo arreglé. Gracias. --> Entonces como es una tabla de multiplicar, se supone que vamos a hacer dos bucles. --> Por y in. --> Y acá vamos a poner uno. --> Te pregunto, ¿será correcto poner esto? Tú me lo vas a decir. --> Tú me vas a decir si eso es correcto o no es correcto. --> Sí, porque se va a estar ingresando lo que es el número. --> Y ahora sí que el por va a estar, no sé si se va a incrementar. --> Del uno hasta el número que nosotros vayamos a. --> A ver, pruébalo si funciona. --> Me avisas cómo te va. --> Sí. --> No. --> No, ¿verdad? --> Me sale el piscito. --> Y vamos a ver por qué. --> Por ejemplo, yo puedo hacer esto. --> Del uno al diez. --> Puedo poner echo, dólar y. --> ¿Qué pasó? --> Ah, me olvidé del do. --> Do, echo, dólar y, down. --> Y me va del uno al diez. --> Pasa de que esto de acá. --> Lamentablemente solo admite números literales y no variables. --> ¿Estamos? Ese es un problema. --> Entonces nosotros tenemos otra opción. --> Y es utilizando el comando sec. --> De secuencia, sucesión. --> ¿Qué pasó? --> ¿Qué pasó? --> ¿Qué hice? --> ¿Por qué no está publicando solo diez? --> Ah, sí, sí. --> Ahora sí. --> Ahora sí. --> Entonces yo puedo utilizar comando sec. --> Que también me va a dar ya una lista. --> Pero que este sí, este de casi me va a permitir. --> Entonces yo voy a trabajar con variables. --> A diferencia de este otro. --> Que solamente admite números literales. --> ¿Estamos? --> Entonces, para hacerlo dinámico. --> No puedo utilizar esto. --> Ya, por eso quería hacer este ejercicio. --> Bueno, por dos cosas quiero hacer este ejercicio. --> Entonces acá voy a utilizar. --> Sec uno. --> Y acá ya puedo utilizar dólar num. --> ¿Estamos? --> Acá ya puedo utilizar el dólar num. --> Ahora sí. --> Ese sí no debe fallar. --> A ver, vamos a probarlo. --> Ya, vamos a probarlo. --> Por ejemplo, 34. --> Y me va a dar uno al 34. --> ¿Estamos? --> 12, me va a dar uno al 12. --> Entonces sí, ese sí funciona. --> Pruebalo por favor que te esté funcionando. --> Sí, perfecto. --> Listo, entonces vamos ahora. --> Ya que tenemos eso y tenemos que hacer una tala de multiplicar. --> Necesito tener otro for. --> Sí. --> Y que también recorra. --> Del uno hasta --> uno. --> Listo. --> Y acá. --> Y acá vamos a --> imprimir. --> Pero no voy a utilizar el eco. --> Voy a utilizar el comando printf. --> ¿Estamos? --> En ese comando printf --> le voy a decir de que --> me deje cuatro espacios. --> O en todo caso, perdón, que utilice --> cuatro espacios en total. --> ¿Verdad? --> Y le vamos a poner acá. --> Y por j. --> ¿Sí? --> Entonces, como el resultado --> que fuese, ¿Sí? --> Acá siempre va a poner cuatro espacios. --> Siempre. --> ¿Estamos? --> Bien. Entonces, a ver, vamos a analizar --> qué estaría haciendo acá. --> Va a entrar, va a entrar, va a imprimir una fila. --> ¿Sí? Se sale. --> Si no hago un salto de línea acá, --> todo lo va a poner en una sola línea. --> ¿Cierto? --> Entonces yo quiero que cuando termine --> el primer recorrido --> de I, me ponga un --> espacio. Es suficiente que ponga hecho. --> Con hecho solito, me voy a poner --> un espacio. --> Si manda error, ya le mandamos un texto en blanco. --> O un texto vacío. --> No debería mandar error. Entonces, vamos --> a ver, esta tabla de --> multiplicar. ¿Sí la has copiado para --> poderlo probar, o te espero todavía? --> Ya. Vamos a probarlo --> entonces ahora. --> Tabla de multiplicar, --> vamos a poner la famosa tabla del 12 --> y ya nos está poniendo --> con cuatro espacios. --> ¿Sí? --> Uno, dos, tres, --> cuatro espacios. --> Todos tienen cuatro espacios. --> Ya, para que --> aparezca en forma --> correcta. --> ¿Sí? --> Tabla de multiplicar, le pongo por ejemplo diez --> y me tiene que dar de uno diez. --> Ya está. Funciona. --> ¿Ya? --> Entonces, lo interesante de este ejercicio, --> haber aprendido a hacer una sucesión --> de números con sec --> para poderlas poner en forma --> dinámica dentro de un bucle for. --> Utilizar el printf --> para poderle dar espacios --> fijos al texto --> que quiero publicar. --> Esas dos cosas han sido interesantes --> en este ejercicio. --> ¿Ya? --> Y listo. --> Vamos a ver --> si hacemos --> ya. --> ¿Tú crees que podrías hacer la número --> cuatro? --> O la voy yo. --> ¿Cuál es, perdón? --> La cuatro, generador de contraseñas. --> Yo la voy ya. --> ¿Sí? --> Ok. --> Tú dime, --> o yo la hago. Tú la haces o yo la hago. --> O lo intentas un rato o yo la hago de frente. --> No hay problema, tú dime. --> ¿Puedo intentarlo? --> Ya, intentalo, ya. --> Si en cinco minutos te das cuenta que te has --> trabado, me dices yo lo hago. --> No hay problema. --> Ok. --> Bueno, --> tiene que ser --> alfanumérico. --> Como tú gustes. --> ¿Se puede utilizar --> entonces --> la misma --> de random? --> No. --> Sí, de hecho que vas a necesitar trabajar con un random. --> Porque es una --> contraseña aleatoria. --> Tienes que trabajar con random. --> Entonces, aquí, --> bueno, porque ya ves --> que me comentabas que era --> el porcentaje --> 100 más 1, o sea, para --> estar... --> Claro, cuando le pones porcentaje 100 --> significa que te va a dar --> más 1, te va a dar de --> 1 a 100. Tú cambias ese 100 --> por el número que tú quieres --> y te va a dar un aleatorio entre esos números. --> Aunque, pero --> si es alfanumérico --> tendríamos que poner --> letras también, ¿no? --> Sí, tiene que tener letras también. --> Más que todo, ese random --> te podría servir para obtener --> la posición --> específica de --> un carácter, ¿no? --> No sé. --> Tú dime, lo hago. Si no, yo lo hago. --> No hay problema. --> Bueno, está ahí --> mi intención de --> elaborar el random, pero --> ya no sé cómo ponerla --> a parte del... --> Ya. --> ... que sea con caracteres, entonces. --> Ya, no te preocupes. Mira, yo lo voy a hacer. --> Yo lo hago, yo lo hago, yo lo hago, ya. --> De paso que vamos a aprender también nuevos comandos --> y nuevas formas de trabajar. --> ¿Está bien? Yo lo voy a hacer --> de dos formas. Una forma --> que es --> una sola línea, --> pero que no tiene mucho --> idea de escribir, pero que lo --> pongo por si lo necesitas en algún --> momento. Y la otra que sí es --> utilizando Google, random y todo lo demás. --> Ya, que es más interesante. --> Entonces, vamos a poner --> touch --> 02 --> creando --> contraseña. --> Ya. --> Nano --> 02. --> ¿Estamos? --> Bean Bash. --> Ya. --> Eh... --> Quiero... --> Déjame probar algo --> antes de... --> de hacerlo. --> Ajá. --> Ya. --> Déjame seguir probando un segundito. --> Si a esto --> le mando --> este R --> ese --> Z --> de la A a la Z --> de la A --> de la Z mayúscula --> ceros y --> nueve. --> Ya está. --> Y --> a esto --> le mando --> un het --> le mando C --> por ejemplo cinco. --> Le mando por ejemplo diez. --> Sí. --> Ya. --> Ya. --> Mira, este --> esto de acá --> me genera una contraseña aleatoria --> con la cantidad --> de dígitos. Claro que no es lo que nosotros --> esperamos en el script --> porque yo lo tengo que ser como un script. --> Pero lo que te quería mostrar es de que --> podemos nosotros --> este --> crear contraseñas con comandos --> y con redirecciones pipas. --> Te voy a explicar primero --> qué cosa es el U random --> que se encuentra en dev. --> Ya. El U random --> en realidad es un archivo especial --> que tienen los UNIX --> en este caso Linux. --> Y que te van a dar siempre --> valores aleatorios. --> ¿Vamos? --> Vamos a generar datos aleatorios. --> Entonces acá ya te lo está dando. --> Es por eso que cuando --> te dices cuenta que me di un montón de cosas --> aleatorias --> sí --> si yo lo ejecuto --> me da todo aleatorio. --> Pero ahí está en la ala --> todo está, todo, todo. --> ¿Estamos? --> Bien. --> Entonces este ya sabes para qué sirve. --> Me da datos aleatorios. --> Ahora, acá --> con el jet lo estoy obteniendo --> sus valores. Y se lo estoy basando --> al TR. ¿Te acuerdas que era el TR? --> Ay, qué bueno. --> Conviente, ¿no? --> Claro, se transforma. --> Ajá. --> El TR --> significa de que va --> este, bueno --> vamos a empezar a transformar. --> El DC. ¿Te acuerdas que es el DC? --> ¿Qué es el DC? --> ¿Qué es el D? --> Que elimine caracteres. --> ¿Ya? --> D significa que elimine todos los caracteres. --> Y C que lo invierta. Es decir --> de que inicialmente --> va a eliminar todos estos caracteres --> después los va a invertir y me va a dejar solo estos caracteres. --> ¿Vamos? --> Y luego --> nuevamente --> este resultado lo paso como pipa --> y me va a empezar a --> devolver los valores. --> ¿Ya? --> Por eso de que me está devolviendo. --> ¿Ya? --> Entonces, este comando --> puedes anotarlo. Te sirve para generar --> passwords. --> Laves aleatorias. --> ¿Ya? --> Es lo primero que te quería mostrar. --> Existe esa forma para hacerlo. --> ¿Si? --> Lo voy a copiar. --> ¿Ya? Para probarlo dentro de un script --> y después hacemos el verdadero script. --> ¿Ya? --> Listo. --> Ya. --> No debemos usar bien. --> Siento raro usando --> nano. --> Es que realmente no lo uso. --> No lo uso. --> Vamos a probar con este. --> ¿Si? --> Vamos a ver si read-p --> introduce --> la longitud --> de la contraseña --> y la vamos a llamar --> longitud. --> ¿Si? --> Ahora. --> Si quiero utilizar este comando --> La única diferencia --> sería que tendríamos que --> ponerla en una variable --> password --> igual --> un dólar --> para que se ejecute --> y el 15 viene a ser --> una variable, dólar, longitud. --> Y después acá --> publicaríamos este --> password. --> ¿Si? --> No me olvidas de nada. --> ¿No? --> Voy a probarlo. --> Voy a probarlo --> contigo. Debe funcionar y si no --> igual no. Y de hecho --> después lo probamos el otro. --> Lo que tenemos que hacer. --> Bash --> Introduce lo que --> hay que hacer es 15. --> Ahí está. --> 12 --> 24 --> ¿Si? Y ahí ya me está generando --> mi password aleatorio. --> Entonces si funciona --> pero no es lo que deseamos. --> ¿Da? --> Funciona pero no es lo que --> deseamos. No queremos --> resolverlo de esa forma. --> Bien. Entonces --> en líneas generales vamos a --> ver cómo lo realizamos --> eso --> la contraseña. --> Y para eso nosotros --> le damos en una variable --> este --> ¿Qué tipos de datos debe tener la contraseña? --> En líneas generales. --> Pues los caracteres --> números --> mayúsculas --> minúsculas. Exacto. --> Todos esos los ponemos acá. --> Los números --> y si quieres algún otro --> carácter especial para que sea --> más --> más complicado --> no sé --> ya --> lo que queramos le podemos seguir --> agregando. --> Pues lo que hiciste --> hacia afuera se tiene que poner --> todo en la variable. --> En realidad todo lo que tú quieras como --> carácter. Eso en realidad se hace en cualquier lenguaje --> programación cuando tú generas --> claves aleatorios. --> Tú determinas qué --> tipo de caracteres van a estar --> van a ser utilizados para esa --> clave. ¿Ya? --> Ahora quiero mostrarte algo --> mira. --> Quiero mostrarte algo. --> ¿Qué crees que me devuelve esto? --> Lo probamos. --> Lo probamos. --> ¿Estamos? Para que lo veas. --> No te preocupes. Lo probamos. --> Me está devolviendo 67 --> y siempre me devuelve 67. --> ¿Por qué? --> Porque es la cantidad de caracteres --> que tiene este de acá. --> Me está devolviendo la longitud de caracteres de este. --> Es lo que le hemos puesto por numeral adelante. --> ¿Da? --> Listo. --> Ahora. --> La idea es que nosotros vamos a tener que --> recorrer todos estos caracteres --> y estos caracteres van a empezar en la posición --> cero. No te olvides de eso. --> ¿Ya? --> Va a empezar en la posición cero. --> Entonces esto lo comento --> porque solamente fue para mostrarlo. --> No nos sirve para nada. --> Vamos a definir --> nuestra variable password --> inicialmente como nada. --> ¿Ya? --> Y --> vamos a hacer nuestro --> loop for --> y --> igual uno --> y menor --> igual --> en --> acá debería ser toda la longitud. --> ¿No? --> Tengo una duda. Ahora la vamos a revisar. --> De repente va sin --> el dólar ya. --> Porque estamos dentro de --> esto. No, no va con el dólar. --> Estamos dentro de --> las dos llaves. No va con el dólar. --> Longitud --> y más más. --> Mira, esto es --> una forma también de hacer el recorrido. ¿Cuál --> era la otra forma de hacer el recorrido? ¿Te acuerdas? --> Or, y, --> in, --> sec, --> ¿te acuerdas o no? --> Sec, uno, --> hasta, --> ajá. --> Longitud. --> Así era, ¿no? La que vimos ese momento. --> ¿Sí? --> Ajá. --> Sí, solamente --> ah, no, ya lo vi. --> Mira, --> iba a preguntar sobre el dónde lo habíamos puesto. --> Pero ya vi que la longitud es lo que se nos parece. --> Ya. --> Pero quiero --> probarla de esta otra forma. --> Si no me sale con esta --> forma, pues ya cambiamos a la que sabemos que sí funciona. --> Sino que quiero intentar --> hacer variar, ¿no? --> Para ver múltiples opciones. --> A ver, --> lo que yo necesito es poder --> encontrar un índice --> de acá. Ese tiene que ir --> en la posición cero hasta la --> longitud menos uno. --> ¿Estamos? --> Así, entonces voy a definir --> acá, --> índice, --> y eso quiero que sea de forma aleatoria, --> ¿o no? ¿Sí? Eso quiero que sea --> de forma aleatoria. Entonces acá eso te viene --> el random. --> ¿Estamos? ¿Hasta qué número quiero --> que vaya? --> Hasta la longitud menos uno. --> ¿Sí? Entonces --> acá nosotros le vamos a poner --> un numeral --> carácter. --> Ya vimos que el numeral --> hace que nos devue a la longitud. --> Como es menos uno --> y este se supone que se le suma uno, --> pues ya no hago nada, ¿no? --> Ya no. --> Esto es así. --> Ya no hago nada. Con eso --> ya tengo mi número del cero al --> 66, que es lo que yo --> espero. Y si cambio el valor de arriba --> no hay ningún problema porque esto se está en forma dinámica. --> Ya. --> Entonces ¿qué vamos a hacer a password? --> Password --> va a ser --> lo que era password, que inicialmente --> es vacío. --> Ya. Y le vamos --> a concatenar --> este --> el carácter en la --> posición que vamos a obtener en forma aleatoria. --> ¿Estamos? --> Entonces --> ¿cómo hacemos eso? --> Decimos caracteres. --> ¿Estamos? Pues si le ponemos solo --> caracteres me va a dar todo y eso no quiero. --> Entonces ya le voy a decir --> quiero que --> te ubiques --> en la posición índice, que es la --> que he obtenido aleatoriamente. --> Ya. --> Y que tomes solo --> una posición. --> ¿Entendió? --> A ver otra vez --> porque --> Ya. --> Te lo explico. --> Caracteres por si solo me va a devolver --> todo esto. --> Yo no quiero que me devuelva todo esto. --> Yo lo que quiero es decirle --> ¿Sabes qué? Te vas a ubicar en esta posición --> y me vas a tomar --> un elemento. Esta posición es un --> elemento al azar de estas de acá. --> Y me va a tomar uno. --> Y me va a tomar uno. Si le hubiera puesto --> una posición uno, toma solo esa posición. --> Si le hubiera puesto dos, hubiera tomado --> dos posiciones. --> Entonces este bucle va a recorrer --> recorrer recorrer recorrer --> hasta que llegue a ser longitud --> que es lo que nosotros hemos puesto --> como máximo. --> Entonces vamos a ver --> Techo --> La contraseña --> generada es --> y le vamos a poner el --> pascual. --> Traiéndolo copias porque como te dije quiero ver --> si esta forma me está funcionando --> o no. Debería funcionar --> pero tengo todavía mi --> pequeña duda. Pero así debería funcionar. --> ¿Ya? --> Vamos con bash --> longitud 14. --> Listo. Si funciona. --> Está funcionando perfectamente. --> Entonces si, también de esta forma nosotros --> podemos hacer un recorrido --> un bucle. --> Y puedes probarlo ahora. --> Si tienes otra --> pregunta por favor me dices. --> Por el momento --> creo que ha sido muy bien. --> ¿Funciono? --> Si funciona. Ya perfecto. --> Vamos con --> otra. --> Nos queda una hora ¿no? --> Si, si. --> Vámonos al nivel avanzado. --> Vamos a hacer --> un sistema de tareas. --> Que es un simple sistema de tareas --> que permita agregar, eliminar y marcar --> como completadas las tareas. --> ¿Ya? --> Yo no voy a hacer esto, no te preocupes. --> Tú haces el --> otro ejercicio. --> Que te voy a decir. --> ¿Ya? Entonces vamos a hacer un sistema de tareas. --> Acá --> no debe haber --> mucho --> problema acá. --> Vamos a ver si estamos en núcleo. --> Vamos a poner touch. --> Estamos poniendo --> con número si. --> Sistema --> tareas.sh --> Bien. --> Ya. --> A ver, ¿que nos está pidiendo el ejercicio? --> Fíjame. --> Lo cierre. --> ¿Lo tienes a la mano? --> ¿Lo que pedía? --> Es el de sistema de tareas, perdón. --> Si creo que lo tengo. --> Si crea un simple sistema de tareas --> que permita agregar, eliminar y marcar --> como --> completadas las tareas. --> Agregar, eliminar. --> ¿Que más? --> Marcar y marcar. --> Como completadas las tareas. --> Bien. --> Ya está. --> Bien. --> Vamos entonces --> a trabajar el medio. --> ¿Ya? --> Acá lo importante es de que --> vamos a tener que trabajar con un array. --> ¿Estamos? --> Ese array se va a encargar de almacenar --> nuestras tareas. O sea, no voy a trabajar --> obviamente con base de datos ni nada por estilo. --> No es el caso en este caso --> de la tarea. --> Entonces vamos a definir tareas --> igual. Y con esto --> le estoy diciendo de que --> estoy diciendo que es un array --> vacío. --> ¿Estamos? --> Esto es un array vacío. --> Que la usaremos --> para almacenar las tareas. --> ¿Ya? --> Bien. --> No voy a usar funciones. --> Vamos a hacer diferente. --> Acá vamos a poner --> nuestro menú. --> Hecho. --> Agregar. --> Tarea. --> Entonces si te percatas la idea es --> de que yo voy a agregar elementos --> al array. --> Ese array --> le voy a mandar --> lo voy a poder eliminar porque tiene una posición --> y --> le voy a poner a esa tarea --> ese nombre de tarea le voy a poner --> le voy a agregar adicionalmente una palabra de pendiente --> o completado. No hacemos la idea, ¿verdad? --> Entonces dos. --> La segunda era --> eliminar tarea, ¿no? --> Eliminar tarea. --> La tres. --> Marcar como --> completada. --> Marcar --> tarea como completada. --> Cuatro. --> Bueno, tenemos que mostrar las tareas, ¿no? --> Claro, haciendo como vamos a hacer --> que vamos a eliminar, pues. --> Sí. --> Necesitamos ver las tareas para ver cual --> eliminamos. Cinco. --> Salir. --> Ya. --> Cinco salir. --> Listo. Ese es mi --> menú. --> Ese es mi menú. --> Y nosotros --> ya sabemos de que --> para los menús es --> mucho más fácil trabajar con case, --> ¿no? --> Pero necesitamos pedirle una opción. --> Entonces le vamos a poner --> read --> menos p --> seleccione --> una opción. --> Listo. --> Case. --> Y lo terminamos. --> Case. --> Doble la opción. --> Y. --> Ya. --> Caso uno. --> Y caso uno es agregar --> una tarea. Entonces le vamos a --> decir read --> menos p --> Ingrese la tarea. --> Ya. La vamos a leer --> en la variable tarea. --> Ya. --> Y nosotros tenemos --> nuestras tareas que es una variable global --> que es una --> raíz. Y para agregar --> un elemento a la raíz le ponemos --> más igual. --> Y le ponemos el texto que queremos --> agregar. Ya. --> En este caso le vamos a agregar --> tarea. --> Pero adicionalmente --> le voy a poner que está en un estado de --> pendiente. ¿Se entiende? --> Esa parte. --> Entonces --> Ya. Ya. Ya. --> Y va a ser --> Como decirlo --> que --> vamos, digamos, agregando como --> tarea de matemáticas o algo así --> y --> aquí se estaría, bueno en este caso --> se va a estar imprimiendo --> o almacenando, la verdad no sé muy bien --> como sea. Ahorita --> tendrá que indicar --> adelante de matemáticas --> pendientes. Exacto. Y se está --> agregando a tareas y acuérdate --> que tareas es un array vacío que tenemos, entonces acá agregando ese array en la --> posición 0, en la posición 1 lo estamos agregando, ya lo que nosotros hemos --> escrito acá, ¿si?, bien --> y vámonos con otra, la otra es este eliminar ¿no?, entonces vamos a poner --> un bit --> ingrese el num a la tarea --> a eliminar --> y lo ponemos en la variable num --> ¿si?, y ¿cómo lo sacamos?, este, ese valor --> ese valor se saca con unset, vamos, unset, eso lo ponemos en tareas --> corchete num menos 1, ¿por qué num menos 1?, porque parten cero, ¿no?, en la radio --> se estaría eliminando ¿no?, estaría restando, exacto, se estaría sacando un unset, lo elimina --> ya, bien, ahora, pero aquí, bueno, me está surgiendo la duda, por ejemplo, vamos a agregar --> la tarea así como te comentaba ¿no?, matemáticas, y en la parte de eliminar --> entonces nosotros, ¿por qué estás agregando como la parte de número?, entonces ahí --> nosotros estaríamos matemáticas, poniendo o ingresando este número nada más un valor --> numérico, y así se estarían como eliminando las tareas, a ver, te explico, lo explico acá, ya, mira --> nosotros tenemos un array, ¿si?, el array se llama tareas, entonces como es un array --> esa tarea tiene posiciones, posición cero, posición uno, estamos hablando de posición, --> posición, dos, tres, pero en la posición cero, por ejemplo, puede tener el texto --> matemáticas, y con la parte queremos agregar nosotros pendiente, ¿si?, luego el otro --> puede tener este otro texto similar, por ejemplo, no se, estructura de datos, el --> otro puede tener base de datos, el otro puede tener algoritmia, entonces el contenido --> en la posición cero es ésta, el contenido en la posición uno es ésta, es lo que --> nosotros estamos haciendo, cuando nosotros hacemos acá, le ponemos el más igual, --> lo que está haciendo es, no tienes ninguno, ok, el más igual, le vamos a crear la --> posición cero, y en la posición cero le voy a poner tu tarea más el pendiente, vuelvo --> a agregar otra, le vamos a crear ahora el uno y le voy a poner estructura de datos --> pendiente, ¿sabes?, y así sucesivamente, cuando yo utilizo el anset, y le digo --> anset tareas uno, por ejemplo, posición cuatro, estoy diciendo ubícate en la --> ¿si?, perfecto, bien, sigamos entonces, sigamos, la tres es mostrar tarea como completada, ¿no?, --> tres, mostrar tarea como completada, que en realidad lo que vamos a tener que --> hacer es cambiar la palabra pendiente por completada, ¿o no?, si, es lo único que --> vamos a tener que hacer, entonces vamos a poner un read, --> mire ese, el número en el que le doy la posición, ¿no?, a marcar como completada, --> y también va a ser nuestro número, ¿ya?, y acá, entonces le vamos a poner tareas, --> nun menos uno, igual, y acá lo que tenemos que hacer es hacer el cambio en esa posición, --> vamos, tenemos que hacer el cambio en esa posición, vamos a utilizar, --> hola, tareas, en la posición número uno, y le voy a decir, --> dame un segundo, voy a callar ese perrito, ¿ya?, por favor, --> listo, entonces lo que tenemos que hacer, como te decía, era reemplazarlo, ¿si?, --> te acuerdas de que nosotros habíamos visto cómo reemplazarlo utilizando el dólar llaves, --> ¿no?, cuando vimos la diferencia de usar la llave, si no usas la llave, es una variante, --> entonces de esta forma, utilizo el backlash, ahora, porque esto es un corchete, ¿ya?, --> para que lo identifique como corchete, es una, un carácter de escape, ¿ya?, es por eso que acá --> también utilizo el backlash para que lo identifique los corchetes, ¿si?, y lo mismo acá, --> podría reemplazar solo pendiente por completado, pero quiero que te des cuenta --> que estoy utilizando, este, esa variable de escape, ¿ya?, ese carácter de escape, --> completado, completado, ¿ya?, entonces nuevamente, para que me reconozca el corchete, --> uso la variable de escape backlash, por eso es que todos antes del corchete tienen esa, --> tienen el backlash, ¿ya?, entonces con esto, se supone que estamos cambiando el estado a la --> tarea, por completado, ¿si?, la cuatro es listar las tareas, vamos a listar las tareas, --> ¿ya?, vamos a listarlas, entonces vamos a poner techo, tareas, vamos a poner un techo, --> y acá vamos a hacer un for, ¿ya?, for y, y, ¿tú sabes cuántas, cuántas elementos tenemos?, --> no, entonces lo que nosotros necesitamos es hacer todo un recorrido, este, para que lo liste, --> ahora lo voy a poner y quiero que tú intentes interpretar lo que estoy poniendo, --> ¿ya?, ¿puedes interpretarlo?, acá está mal la variable, acá le falta esto, ya está. --> Bueno, aquí se dice que hasta que, lo que tengamos en el i, o en el valor en i, --> ya, esto te devuelve los índices, ¿estamos?, eso te devuelve los índices, es por eso que --> si te devuelve los índices, vamos a empezar a poderlos literar, ¿si?, ¿entonces el --> diferente aquí, bueno el signo de admiración?, no, es que acá no es, acuérdate que esto no es --> una condicional, todo esto te devuelve, este, todos los índices de la, de la --> red lotarias, todo eso, si tú no le pones estos, lo que te va a devolver simplemente --> es la cantidad, y tú quieres que te devuelva todos los elementos, si no tendríamos que hacer --> otro tipo de booklet, acuérdate que eso trabaja con una lista, entonces esto te está dando la --> lista de los elementos, ¿está bien?, perfecto, luego la opción 5 ¿qué cosa es?, está bien creo, ¿no?, --> son 5 es salir, por lo tanto salir para nosotros es un salir del bucle, que es un break, --> y cualquier otra cosa que no sea del 1 al 5, es una opción inválida ¿verdad?, --> y nada más, ahí termina el, el que, si termina el dom, ¿si?, el y, --> ya, ¿lo pruebo o lo terminas de quitar para probarlo?, --> este, si quieres, entonces lo probamos, ahora lo vamos a probar mejor, ya, vamos a probarlo, de repente no funciona y, --> y quedamos mal, ¿qué está?, diciéndonos, línea 44, --> ¿qué tiene malo?, --> no leo nada malo en la línea 44, --> nos estamos olvidando de cerrar unas llaves creo, --> creo que nos estamos olvidando de cerrar unas llaves porque los colores no están, --> no están siendo, mira acá estas tareas no están igual con el color de acá arriba, --> quiero, quiero ver algo acá, --> pues no, no es eso porque sigue como, sin cambiar los colores, ¿no?, --> a ver, --> tan tan tan tan tan tan tan tan, hice tarea, tarea pendiente, --> a ver cuál es el error, ya lo vi, ya lo vi, te percatas el error o no, no, no, no, no, --> faltaba acá la llave, ya está, esa es la que faltaba, así estaba ¿verdad? --> si, faltaba, pero mira, es que como lo que hago es cuando abro la llave, la cierro de una vez, --> y a veces escribo, pues no lo veía, claro, a ver mira, te quiero mostrarte en nano algo, --> en nano, te manda algún error de color, no ¿verdad? --> y en pi, --> y pi tienes 50 mil millones de ventajas sobre nano, o sea te lo digo, muy superior a todo, --> listo, ahora vamos a ver si funciona, ya, llegó el momento de, dice agregar tareas, --> vamos a ponerle hacer cinco ejercicios de matemática, --> ¿qué pasó? ah, tengo que poner uno ¿no? --> pero estoy poniendo uno, selecciono una opción, no me está funcionando, --> uno, ingresa la tarea, ah, nos estaría faltando poner un eco para indicar que se debe de ingresar, --> no, mira, no, ahí está, ¿por qué no se está deteniendo? lo estoy poniendo y no está entrando a la, --> ah, qué gracioso que soy, --> estaba mandando el read y nunca le había mandado la opción, la variable, --> ese es gracioso, ahora sí, uno, ingresa la tarea, realizar cinco ejercicios de --> bash, vamos a ver, cuatro, me debería mostrar, --> uno, realizar cinco ejercicios de bash en estado pendiente, voy a agregar otra, --> ingresa la tarea, a ver, este, no, ya no realizar, ir al curso de puzzles, --> cuatro, --> entonces la opción uno, la opción cuatro está funcionando, sí, ahora vamos a marcar como --> completada, sí, ya sabemos que tenemos uno y dos, marcar tarea como completada es la opción --> tres, ingresa el número de tarea a marcar como completada, voy a poner que hemos ido al --> la posición dos, sí, y voy a volver a mostrar las tareas, cuatro, ir al curso de puzzles --> completada, realizar cinco ejercicios de bash pendiente, ahora ya no voy a hacer el ejercicio --> uno, la voy a eliminar, entonces vámonos a la segunda, que es eliminar tarea dos, voy a eliminar --> este, la tarea uno, y voy a mostrar cuatro, ir al curso de puzzles, ten en cuenta de que --> ya no hay opción, la posición uno, es posición dos, es por eso que estamos utilizando el tema --> de la lista de posiciones de nuestro array, ya, y listo, cinco, salir y funciona, perfectamente, --> listo, puedes verlo ahora también, hazlo y pruébalo, ok, ahora nada más puedo ver el final, ah sí claro, --> sí, sí funciona, perfecto, perfecto, bien, vamos a hacer ahora un menú que simule la creación --> de un backup, que me liste los backups, que envíe a un servidor remoto, así se me escuche, --> usé mute, usé mute, ya cuantas veces me ha pasado, tres, cuatro, bueno ya, te decía, --> vamos a simular, vamos a crear un menú donde vamos a simular, crear un backup de una base --> de datos, o de archivos, no sé, vamos a listar todos los backups que hemos generado, --> vamos a enviar el backup a un servidor remoto, en este caso a otra computadora, --> y vamos a simular la restauración de un backup y vamos a salir, ya, yo te voy a enseñar un --> comando de cómo copiar de un servidor a otro servidor, estamos, y tú vas a intentar hacer --> esto, y con unas botes que te voy a dar, voy a entrar a mi máquina, un segundo por --> favor, porque tendremos que tener, estar en la misma red, ya, listo, --> ya, primero voy a ver, ¿lo verás las letras?, si se ven un poquito chiquitas, --> lo cambié, lo cambié, espérame, este, y acá cómo se cambia en stem, --> create a new profile, es mi profile, apariencia, cambios de color, --> acá están muchos, qué feo interfaz se han puesto, no, no veo bien, creo que ahí estaría, --> si no, ahí estaría, a ver, tú también necesito que hagas, IP espacio A, --> tengo que estar, en donde?, porque ahorita estoy todavía en la parte de scripts, --> no, donde tú gustes, ese es un comando que nos va a determinar la IP de nuestra máquina, --> lo vas a hacer en cualquier lado, ok, espacio A, ya, busca una línea, la tercera línea --> de la segunda parte, ya, en mi caso la IP es 10.0.3.15, la tuya debe ser 10.0.3 --> y algo, a ti es igual 10.0.3.15, no puede ser, pues que yo estoy en tu máquina, --> no quiero estar en tu máquina, no, no, no puede ser, pin 10.0.3.15, es que no puede ser, --> entonces estamos en redes distintas y no vamos a poder simular la copia de una --> de una máquina a otra, rayos, bueno, usaré mis computadoras, espérame, ya, --> lo voy a hacer en el mío para que sepas cómo funciona un copiador remoto, ya, --> dame un segundo, ya tengo dos computadoras, una que es la máquina virtual que es --> la que trabajo y la otra que es mi máquina normal, ya, esta tiene como IP --> 192.168.80, ya, y la mía que es la que está como este otro color, tiene la --> son distintos, está bien, ya, aunque mis dos usuarios sí se llaman Christian, ya, --> si te das cuenta, dice usuario Christian y mi computadora se llama Christian Reisen --> y esa se llama Cursovash, ya, bien, ahora la voy a abrir acá, voy a separarlo en --> dos, ya, tengo dos, el de la izquierda me voy a conectar a la otra máquina, --> ¿Sabes usar el comando SSH? Ah, sí, se puede poner SSH, como se llama la IP, --> o el nombre, exacto, en este caso la otra máquina es .80, no, le pongo yes --> y servidor X, esto, entonces esta ya es la máquina del curso, lo que --> estoy haciendo anteriormente y este es mi máquina, ya, voy a crear en mi --> máquina una carpeta que se llama Curso Subium Bash y voy a entrar a esa, --> Curso Subium Bash, que obviamente no tengo nada, ¿Estamos? Ya, ahora en la --> otra máquina, en esa máquina nosotros tenemos la carpeta scripts, ¿Estamos? --> ¿Sí? Sí, imagínate de que mi idea es que este, este archivo scripts, esa --> carpeta scripts, yo la comprima y la mande acá, ¿Sabes hacer eso? No, ya, --> lo vamos a hacer primero, el comando para comprimir es tar, menos xzvf, perdón, --> czvf, ya, eso es este, el comando, luego viene que es lo que quiero --> comprimir y al final viene el nombre y le voy a llamar scripts.tar.gz, --> ¿Ya? Entonces, el tar.gz significa de que lo que va a hacer tar es ponerlo --> en un solo archivo y el gz lo va a comprimir, ¿Está bien? Eso es lo que --> yo quiero que tenga el archivo comprimido y después lo que voy a comprimir, ¿Ya? --> Entonces, al haber hecho eso, si te percasaste ya me lo ejecuto, al momento de hacer --> yo ya tengo scripts.tar.gz, un archivo comprimido, ¿Ya? Y lo que quiero es --> mandarlo a este otro servidor, a esa carpeta, cursosuvionbash, que en realidad --> se encuentra dentro de home christian cursosuvionbash, ¿Estamos? ¿Cómo lo hago? --> Es el script.tar.gz, ¿Ya? Con ese 600 copia en forma remota, ¿Qué vas a copiar? --> scripts.tar.gz, ¿Con qué usuario? En ese caso mi usuario del otro lado es --> Christian también, mi ip dijimos que es 192.168.1.85 creo, ¿No? --> 185.85, dos puntos y ahí le digo dónde quiero que se copie, dentro de home --> christian cursosuvionbash, ¿Ya? Nuevamente solamente para que veas, --> no tengo nada ahora, ¿Si? Al momento de hacer scp, le pongo yes, me pide la --> contraseña y lo ha copiado, por lo tanto voy a hacer un ls acá y ya lo tenemos, --> ¿Si? Entonces el comando scp nos permite transmitir archivos de nuestra --> máquina o de este servidor hacia otro servidor, no lo voy a hacer pero es --> posible generando certificados rsa de que no me pida la contraseña para --> automatizarlo, darle confianza entre máquina y máquina, ese es un tema de --> configuración y podría ejecutar el comando sin que me pida la contraseña --> y todo se automatiza de 100%, ¿Ya? --> Bien, entonces como nos queda poco tiempo yo voy a realizar el ejercicio, ¿Ya? --> Entonces vamos a hacerlo más rápido posible, ya salgo de acá, ya salgo de --> este, menubocaps.sh, ¿Ya? Voy a hacer con bim, ya tú normal --> puedes hacerlo con nano, entonces acá este le ponemos, bim bash, ¿Ya? --> Vamos a poner donde se va a crear los backups, vamos a poner entonces --> backups dir, ¿Si? Esto va a ser la carpeta home --> slash backups, ¿Ya? --> Vamos a poner en remote server donde quiero que se copie --> y nosotros ya hemos visto ese momento que necesita un usuario --> arroba una ip --> dos puntos slash la ruta donde quiero que se copie --> ¿Estamos? --> Listo, ahora vamos ya a hacerlo un poco más profesional nuestro backup --> nuestro script, acá le vamos a decir si es que no existe el directorio --> si no existe nuestro directorio de backups, entonces quiero que lo cree, ¿Ya? --> mkdir menos p por si es que necesita rutas complicadas --> y le ponemos un dólar --> backups dir, ¿Si? Hasta ahí está claro, solo estamos diciendo que si no existe --> esa carpeta de backups que la cree, ¿Ya? --> Listo, vamos a necesitar una función de backups, vamos a tener que crear una --> función, crear backups, acá ya pues dependiendo de la base de datos con que --> trabajemos o no trabajemos o no trabajemos o no trabajemos o no trabajemos --> ese proceso, nosotros lo vamos a simular, ¿Ya? --> Primero vamos a necesitar un nombre de archivo --> a eso le vamos a llamar backup file, ¿Ya? --> Ese nombre de archivo yo quiero que tenga el nombre de backup subgion --> ¿Si? --> Y quiero que tenga la fecha de creación --> para eso voy a utilizar el comando day, day te devuelve toda la fecha completa --> pero quiero que me lo devuelva en este formato --> este año, mes, tú puedes cambiarlo, ¿No? --> El nombre es día, subgion, hora, minuto, segundo --> ¿Si? Entonces sería 2004, 08, 23, subgion, 3, no, sería 15 porque está en --> mayúscula, es 48 con la cantidad de segundos, estamos como nombre de archivo --> ese va a ser el nombre de archivo, ¿Ya? En líneas generales es el nombre de archivo --> y el nombre comprimido lo vamos a llamar backup, el nombre comprimido, ¿Ya? --> El nombre comprimido no va a ser otra cosa que el nombre que hemos obtenido --> hace un momento, el backup file.tar.gz ya sabemos de que lo que vamos a hacer --> es, ese archivo lo vamos a comprimir, ¿Ya? --> A ver, voy a simular que este torch está creando un backup, ¿Ya? --> Vamos a simularlo con backupdir, slash, dollar, backup file --> supongamos que este archivo que lo estoy creando con torch es mi backup que se ha creado --> ¿Ya? ¿Si? --> Le vamos a poner un texto --> backup subgion file, ¿Ya? --> Entonces, asumimos que ese es nuestro backup de la base de datos --> y lo que vamos a hacer ahora es crear --> lo vamos a comprimir, lo que hicimos hace un momento, ¿Estamos? --> Entonces pondríamos el nombre del backup name --> y lo vamos a poner en la carpeta backups --> backupsdir, slash, backup name --> entonces este es el que tiene el nombre de tar.gz --> ¿Y que quiero comprimir? Lo que quiero comprimir es el --> backupsdir, backup file --> ¿Si? ¿Se está entendiendo ese comando? --> Como se supone que este es mi backup --> lo que estoy haciendo acá es, lo acabo de comprimir --> como ya lo he comprimido, ya está compreso --> este archivo ya no me sirve, ¿Cierto? --> este archivo ya no me sirve, el backup file --> entonces, para que no me ocupe espacio, vamos a hacerle un rm --> $backupsdir, slash, backup file --> ¿Si? Entonces acá comprimo, una vez que termine de comprimir, borro el archivo --> si todo está bien, acá yo ya tengo que comprobarlo --> todo está bien, entonces acá le digo, si la salida --> acuérdate de este comando, ¿Que te hace este comando? --> ¿Te acuerdas? --> Eh, si, una cosa que lo vimos, pero ah, ya fue, fue --> ya esto, si no, claro, de hecho, eso de acá te devuelve --> el código del último comando ejecutado --> ¿Estamos? --> Entonces, si es que no ha habido ningún error, espérate, esto no viene acá --> si es que no ha habido ningún error, ya, de crearlo --> entonces, significa que se ha creado el backup --> ¿Ya? --> Entonces vamos a poner, hecho, backup creado --> $backupMain --> ¿Si? --> De lo contrario, backup no creado --> Hay muchas formas de hacerlo, estoy intentando hacerlo --> más rápido posible, lo ideal es, generar un check soon, ver si el archivo --> existe, que sea mayor que cero, ver todas esas condiciones --> Ya, eso quiero que lo sepas, estoy intentando hacerlo --> pero el tiempo tampoco nos va a dar mucho, ¿Ya? --> Vamos a poner listar backups --> listar backups --> este, vamos a poner, si el directorio existe --> ahora ya tenemos que verlo de esa forma --> backups, si el directorio existe --> entonces, vamos a publicarlos, si --> ah, lo voy a hacer con ls, nada más, ¿No? --> pero, no, hagámoslo bien --> aunque nos demoremos un poco más, si podemos pasarnos unos minutos, ¿No? --> ¿No tienes problemas, o si? --> No, no hay temas --> Ah, ya, estaba preocupado, por si es que no podías ya --> si nos demoramos un poco más, no hay problema, lo voy a hacer como tiene que ser --> BackupGear --> Ya, lo que pasa es que, si solamente le pongo ls --> me va a dar toda la ruta completa, yo solo quiero que me visualice --> el nombre de archivo, ¿Verdad? --> tan slash asterisco --> punto tar, tar punto g --> tar punto gz, ¿Si? --> ya está --> o si no le ponemos así --> que es mejor --> ya está --> si, acá va a estar, va a buscar todos los archivos que estén acá --> pero yo no quiero que me de la ruta completa, solo quiero que me de la ruta --> del archivo --> a ver si te acuerdas que hacía acá esto --> acuérdate que hacía menos e, ah, revísalo que hacía menos e --> menos e? --> no me acuerdo --> revísalo, revísalo, yo avanzo --> ah --> que comprueba? --> es que era lo de --> es de archivos --> era para que --> para que pudiera este --> ah, con la interpretación --> de lo que está haciendo --> no, no te acuerdas de que menos e, revisa si es que existe ese archivo? --> ah, no --> no? --> no, me acuerdo --> ya, pero ya sabes --> te acuerdas, te acuerdas como hemos utilizado esto al principio cuando te explique verdad? --> si esto te manda un código verdadero, ejecutalo de acá --> si esto te manda un código falso, no ejecutalo de acá --> lo que te estoy diciendo acá es, si existe este archivo --> entonces me lo publicas --> pero solo su nombre --> ah, ok --> ya? --> si --> ya, vamos a hacer de estos dos --> ya, vamos a hacer de estos dos --> listar backups --> ya vamos a hacer el menú --> vamos a poner un while true --> do --> done --> ya? --> vamos a poner un hecho --> este uno --> llegar a un backup --> hecho --> dos --> listar backups --> tres --> eso lo vas a acabar tú --> tres --> este --> enviar backup --> a servidor --> remoto --> hecho cuatro --> restaurar --> backup --> y cinco --> salir --> ya? --> entonces --> acá le vamos a poner --> read menos p --> seleccione --> una --> opción --> y la vamos a llamar --> opción --> y nuevamente --> en nuestros case --> poner opción --> in --> primero lo habíamos --> llamado crear backups --> crear backups --> entonces la opción una vez de frente --> crear --> backups --> llamamos a la --> opción --> dos --> listar backups --> y le hemos llamado --> listar backups --> listar backups --> y terminamos --> no vamos a hacer todas --> terminemos bien --> la otra que todavía no tenemos --> la otra es enviar backups --> que en un momento lo hacemos ya --> la otra es --> restaurar backups --> y la cinco va a salir --> aquí --> y cualquier otra opción --> distinta --> echo --> ingrese una --> opción --> vale --> si? --> ya está --> entonces vamos a crear ahora --> la función de enviar backups --> y restaurar backups --> aunque restaurar backups --> solo pondremos un echo --> la de --> enviar si --> enviar backups --> backups era? --> enviar backups --> enviar backups --> ya? --> lo primero que tenemos que hacer --> es que liste --> los backups --> cierto? --> listar backups --> eso ya lo tenemos en la función --> por eso simplemente lo --> ejecuto --> echo vamos a ponerle --> este --> ingresa --> el nombre del backup --> y --> mejor lo ponemos de frente con --> read-p --> y lo vamos a llamar --> backup read --> ya? --> ahora vamos a --> probar --> si es que el archivo existe y es regular --> o sea con --> menos f --> dolar --> ya sabemos que va a estar --> en la carpeta backup dir --> y es una variable global --> dolar backup main --> si es que existe --> entonces si podemos --> copiarlo --> ten --> y usamos --> el comando scp --> ya --> este --> vamos a copiar --> este archivo --> a donde lo vamos a copiar --> ya lo tenemos en una variable remota --> con su copiar --> si? --> el scp que te he mostrado hace un momento --> ya lo está copiando --> como se de que lo ha copiado --> correctamente --> o sea que no ha habido ningún tipo de error --> nosotros acá le vamos a poner --> el dolar --> para saber como salió el ultimo comando --> te acuerdas? --> si esto es igual --> a cero --> significa que se envió correctamente --> din --> hecho --> enviado --> correctamente --> de lo contrario --> hecho --> error --> al enviar --> el backup --> ya? --> y si es que no existe el archivo --> entonces le vamos a poner un else --> hecho --> no existe el backup --> ya está --> respetar el backup no lo vamos a hacer --> ya? --> vamos a ver si esto funciona --> vamos a ver si esto funciona --> linea 6 --> que hay en la linea 6? --> escape 6gg --> esta es la linea 6 --> espacio no? --> espacio --> y porque no se detuvo? --> enviar backups --> enviar backups --> ah porque nunca hemos llamado al menú no? --> esto lo hemos puesto por funciones --> y nunca lo hemos llamado al menú --> cierto? --> porque menos una función --> entonces --> no va a ser absolutamente nada --> listo --> a ver --> voy a poner 1 --> esta mal --> dice --> escrito date --> a ver --> vamos a revisar --> no creo que sea --> por el tema de --> espacios no? --> igual vamos a probarlo --> state --> vamos a probar este comando --> algo está mal --> en el comando que está mal --> a ver --> de año --> indy que esa es la primera --> mayoría --> si --> para que sea de 2024 --> si no diría 24 --> ok --> a ver tenemos dollar --> date --> más --> porcentaje --> porcentaje --> porque está mal --> eso es en espacio --> el más --> el más es --> en espacio --> eso es así --> eso es así --> ok --> listo --> vamos a ver --> 1 --> crear un backup --> listo mira --> eso es normal --> eso es normal que aparezca --> eso no es un error --> ya ha creado --> ya ha creado la carpeta backups que no la teníamos --> ya ha creado --> este archivo --> luego ha creado este backup --> y después no lo hemos publicado --> pero debe haber borrado --> las opciones --> a ver 2 --> a ver déjame revisar --> ls --> con christian --> ya --> sí está --> vamos a borrarlos todos otra vez ya --> no --> no --> lo borré --> en vez --> de borrar la carpeta --> borré esta carpeta --> borré nuestra script --> no hay dilema espérame --> no hay dilema --> lo que pasa yo tengo yo hice ese ejercicio --> antes de la semana pasada --> yo lo debo tener hecho espérame --> lo voy a buscar --> en mi máquina --> como lo borré y quise borrar los de atrás --> yo lo tengo --> yo lo he preparado --> yo lo hice --> este creo que es --> a ver --> si si lo tengo lo tengo --> lo tengo --> y lo tengo completo --> si lo tengo --> ya --> bien --> este --> menu backups --> .sh --> script y --> ya está --> eso lo hice la semana pasada --> justamente para preparar el curso --> ya --> debe ser muy similar --> esto es el remote server --> el remote server que dijimos que iba a ser --> christian --> la ip bueno que va a fallar --> la carpeta --> dime --> 25 --> igual va a fallar --> porque este es otro --> vamos a ver --> vamos a ver --> si lo copio --> si debe funcionar --> debe funcionar --> y la vamos a copiar en la carpeta --> voy a crear una --> creo una carpeta curso bash --> en mi máquina --> a ver déjame revisar --> si en mi máquina creo --> vamos a crear una carpeta curso bash --> que están los scripts.cargz --> te acuerdas --> entonces ahí lo vamos a copiar --> con christian curso bash --> y el backup --> entonces esto era --> si es que no existe se va a crear el directorio --> con su echo perfecto --> este es lo que se crea del backup --> que es similar o que no es lo mismo que hemos hecho --> tengo mi memoria fotográfica acá --> es mira y acá ha estado bien --> ya creamos el backup --> creamos todo --> este es mi backup de postgres --> acá hay un error --> porque acá debería también faltar --> el backup tier --> ya está --> y si se crea bien el backup --> si no se crea listo --> ya está --> acá está para listar --> que es lo mismo que hemos utilizado --> y enviamos --> el backup --> el backup tier --> a remote server --> si es que no es el envío --> ya es lo mismo que hemos hecho --> y acá tenemos en la función restaurar backups --> que no lo vamos a enviar pero igual te lo voy a pasar todo el script ya --> listo --> entonces --> escape --> dos puntos wq --> teóricamente este sí funcionaba --> listo --> crear un backup --> bueno --> eliminando la red --> me la habíamos quitado la anterior --> dos vamos a listar los backups --> y tampoco está listando --> si si está listando no todos los archivos --> vamos a eliminarlos ya --> vamos a eliminarlos para poder --> pero los voy a eliminar bien no quiero que vuelva a pasar lo que ha pasado --> en backups vamos a eliminar todos --> vamos a eliminar todos --> entonces --> si acá --> vuelvo a poner --> listar backups --> no me debe devolver nada --> listar backups --> no hay --> voy a crear un backup --> si --> error a crear el backup --> porque uno --> listar --> y si lo ha creado --> ah --> ya sé por qué --> espérate ya sé por qué --> me está diciendo error a crear el backup --> porque el último --> comando que estamos haciendo es el --> rm ya estamos --> y no nos interesa el rm --> nos interesa este tar que lo haya creado --> bien --> y el rm siempre --> te puede mandar este error --> los voy a volver a borrar ya --> listo ya no tenemos ningún backup --> ahora --> otra vez --> crear backup --> eso te dije eso no es ningún error --> eso es parte del proceso de la creación del backup --> ya --> y se ha creado --> voy a listar el backup --> cuantos tengo --> tengo uno --> voy a volver a crear otro backup --> voy a mostrar --> ahora cuantos tengo --> dos --> vuelvo a crear --> tengo tres y así sucesivamente --> puedo ir viendo no --> ya está --> ahora --> pero lo que vamos a copiar es el último backup --> ese es el que se va a copiar al final --> o no o es el --> como no tenemos para copiar --> el código es que no me acuerdo --> vamos a ver el copiar --> como está ya enviar backup --> tres --> ah ingrese el backup --> cual quieres copiar? este lo copiamos --> el 42 --> llegar --> esta piedra contraseña --> pongo mi contraseña --> backup enviado --> correctamente --> lo voy a revisar --> lo vamos a revisar acá le hago un ls --> y si mira ya lo copió el otro --> servidor --> estamos --> ya está y bueno el patro backup --> es otra cosa que no lo vamos --> a utilizar --> lo voy a descomprimir y esas cosas --> en líneas generales --> está funcionando verdad? --> si --> ya va a acabar salvada correctamente --> te paso el script --> porque ya no tenemos mucho tiempo ya te lo revisas --> mira si tienes --> si tienes dudas --> me escribes --> y te puedo apoyar en este --> ejercicio lo dudas que tengas en esta semana --> ya? --> acá te dejo --> te lo paso --> te lo paso al chat --> si tienes dudas en esta semana --> me escribes y te apoyo ya te estoy dejando en mi correo --> ya solo si tienes dudas --> nada mas --> bien --> este que te ha parecido? --> si te ha parecido --> has logrado aprender BASH --> programación BASH ya te sientes mas tranquila --> programar acá? --> si ya --> la verdad es que de que debo de repasarlo --> bastante si debo de repasarlo bastante --> porque si son --> demasiados comandos --> que puedes --> combinar entonces tienes que saber --> realmente como lo puedes --> pues si --> así se combina --> para lograr lo que uno quiere --> claro --> la verdad es que si --> antes de tomar el curso --> la verdad si estuve --> revisando --> en algunas páginas --> mas o menos esta parte --> no te voy a decir que --> muy bien --> lo sabía pero creo que algunas cosas --> que investigue --> no se me hizo como tan --> pesado de --> pues es que esto --> se tenía que hacer así no? --> no fue como tan --> complicado --> el --> poder --> aprender este tipo de --> de --> comando y lo que se necesita --> para tener --> el script --> ya entonces --> crees que si te ha servido ese curso? --> si la verdad es que --> bastante --> como te la había comentado el día de ayer --> la verdad es que estoy retomando esta parte --> la verdad es que --> si --> estaba --> siento yo que estaba como divagando --> un poquito --> con anterioridad pero ahorita --> creo que estos ejercicios --> y todo lo que ahorita --> estuvimos viendo --> la verdad si --> siento que me va a ayudar --> además de reforzar lo que --> a veces a veces no sabía --> claro --> que bueno --> Laura de verdad que si --> ya sabes cualquier --> duda que tengas me avisas te puedo --> apoyar en la semana para que alguna --> duda que haya quedado te pueda --> por correo liberar --> esa duda que tengas --> listo --> entonces ya será otra oportunidad --> cuídate mucho --> gracias --> a ti las gracias --> gracias --> gracias --> gracias --> gracias --> No se pasa. --> No se enloja? --> No, no hay nadie enlojado aquí. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> ¿Qué pasa? --> ¿Qué están haciendo? --> No, no hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> No hay nadie enlojado. --> una munición como si fuera racimo, como si fuera metralla para alcanzar el máximo daño posible a las aeronaves que estuviesen en la pista --> que se disfrazara la fusión y dañan a las aeronaves que son bastante sensibles a este tipo de ataques --> y pues nada, pues hay parámetros ucranianos que siguen intentando destruir los aviones rusos en la pista --> intentando pues suprimir a las ruedas de aviación rusa que se causan unos tantos problemas para las fuerzas afajas ucranianas --> pero lo dicho es que vamos ya a la zona de reparaciones, vamos ya a ver qué ha pasado en estos cuatro días, tres días --> los cuales como he comentado son bastante importantes --> vamos el día a día a comenzar de sur a norte porque en el norte es donde más se complica la cosa o hilar --> por lo menos hilar los acontecimientos que es más complicado pero sí que lo vamos a analizar que es bastante importante --> en la zona de Gerson, en la zona de Gerson hay un único informe relevante además de los típicos apertenimientos, controlos y todo eso --> una cosa importante, algunas personas piensan que porque no ponemos fotografías, imágenes de Gerson o de Kurz en algún --> de Anz o de Harkov en algún momento significa que no hay conflictos o que todo ha parado, no es verdad --> los conflictos siguen siendo como si los iguales en algunos casos más --> pero el intercambio de multicentroartillería, el intercambio de ataques con drones es cosa del van de cada día como debíamos --> por lo cual ese tipo de cosas no registramos al menos que sean para posicionar un avance o un asalto --> pero eso ocurre en todo el 30 por las dos partes, no sé si estén en presencia porque algunos tienen comentado eso --> ahora, en la zona de Gerson dos sistemas Heimers, MRS M270 si no es mal, fueron destruidos en la zona --> al parecer estos dos sistemas Heimers estaban intentando mantener una especie de cobertura justo en este bosque --> como pueden ver los dos lanzadores y también los sistemas de carga --> básicamente estaban los asesores remunicionando el MRS y coordinando los ataques contra la dirección --> y pues en esta zona fueron atacados por un sistema Iskander --> los Iskander son con este propósito, pueden ver que hubo una explosión subsecuente que al parecer incluso en el almacén de al lado --> almacenaban proyectiles, al parecer era una zona donde los Heimers operaron, pueden ver que el Heimers fue destruido por completo --> en este caso sí que era un Heimers de verdad, completamente cancinado el Heimers hasta los cimientos --> pero pues ahí tiene que ser otro Heimers, también algunos han comentado que puede ser que sea uno de esos Heimers que tenían --> misiles Atacams, eso ya es un poco de especulación, pero sí que es una de las direcciones desde donde Rusia ha recibido ataques --> con misiles Atacams hacia la dirección de Germania --> En Maratok-Makka las tropas rusas han soldado una bomba 1500 contra la principal posición defensiva de las tropas ucranianas en la parte del sur --> y la carretera principal, básicamente la carretera pasa por aquí por el centro y justo esta parte del sur es un punto de despliegue de las Fuerzas Armadas de Ucrania --> y la dirección rusa comenzó a bombardear eso con bombas de 1500 kilogramos --> Si nos vamos un poco más ya a la zona de Donetsk, Donetsk al sur es bastante curioso lo que está pasando alrededor de esta zona --> Las tropas rusas presentaron un video en el cual en este video se puede ver el asalto contra estas líneas de bosque que los ucranianos tenían --> en este caso pues un trinomio de tropas rusas asaltando con rifle una trencha ucraniana --> en la cual pues al final se sobrepasan al enemigo maniobrando con poder de fuego --> y se ve como puede ver con la dirección de drones que ahora como sabrán, bueno no sé si sabrán pero --> ahora los rusos para toda maniobra, toda maniobra que sea apoyo, toda maniobra que sea desplazarse, toda maniobra que sea pues --> cualquier tipo de maniobra ofensiva o defensiva se utilizan drones en tiempo real, o sea información en tiempo real --> para la asistencia de las tropas en el terreno de los decomandantes que procesan información de operadores de drones --> o sea las tropas rusas pues necesitan en este momento con su nueva doctrina de controles implementar ese tipo de tácticas al redopo del frente --> por lo cual pues incluso cuando llegamos a Kursk, eso también es uno de los motivos --> si se preguntan por qué los ucranianos se cargaron las torres de comunicaciones rusas y la energía de la torna que fue impuesta en las tropas rusas --> por eso mismo porque la OPCAM sabían que los rusos como si lograran mantenerse a control en el campo de batalla de drones y todo eso --> pues era bastante complicado, aquí pues las tropas rusas evacuaron a esa persona que se estaba arrastrando, no está herido ni nada --> solo que las tropas rusas le dijeron venganse a nosotros, no te hacemos nada, se estaba arrastrando, cogen el chaleco y lo meten para atrás --> por el cual pues así pueden ver que se está llevando esa dirección hacia la carretera 02-32 --> pueden ver que esos comandantes son bastante intensos --> ahora en la zona igual a la carretera, en esta línea del bosque hay una posición igual fortificada ucraniana --> las tropas rusas intentaron asaltar esta posición y con IFVs, en este caso las 72 regidas delincuentes y mecanizadas ucranianas --> Reno, ese ataque ruso, y con ese ataque fueron destruidos si no estoy mal dos Reno T2 de parte de Rusia --> y pues pueden ver que ese asalto no salió tan bien, sin embargo