<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[ChuJALT - Linux]]></title>
		<link>https://chujalt.com/</link>
		<description><![CDATA[ChuJALT - https://chujalt.com]]></description>
		<pubDate>Sat, 02 May 2026 10:50:50 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Problemas instalar Linux Mint en USB.]]></title>
			<link>https://chujalt.com/thread-49.html</link>
			<pubDate>Tue, 03 Aug 2021 17:54:19 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-49.html</guid>
			<description><![CDATA[Saludos.<br />
<br />
<br />
Estoy intentando instalar Linux Mint en un USB, no el live, el SO completo, y me es imposible, no sé que ocurre con el cargador de arranque.<br />
<br />
<br />
Os pongo en antecedentes, mi PC tiene instalados 2 discos duros, uno con win y otro de 2 TB donde tengo linux y otra partición para compartir archivos entre los 2 SO.<br />
<br />
<br />
Grabo en un USB la versión live de Mint y la arranco , pongo el USB donde quiero instalarlo y clico para iniciar la instalación.<br />
<br />
<br />
En en paso donde pregunta donde instalarlo le doy a "otras opciones" para elegirlo manualmente.<br />
<br />
<br />
Me salen 4 dispositivos:<br />
<br />
/dev/sda --- Uno de los discos duros de mi PC<br />
<br />
/dev/sdb --- El otro disco duro de mi PC<br />
<br />
/dev/sdc --- El USB donde está la versión live de Mint<br />
<br />
/dev/sdd --- El USB donde quiero instalarlo<br />
<br />
<br />
En /dev/sdd empiezo a hacer las particiones:<br />
<br />
Una de 300MB de la clase EFI<br />
<br />
Otra de 2GB de intercambio<br />
<br />
El resto la dejo como "/" para instalar el SO.<br />
<br />
En donde pregunta donde poner el sector de arranque selecciono /dev/sdd<br />
<br />
<br />
Lo instala sin problemas, reinicio, le digo que arranque desde el usb y ahí empieza el primer problema (aunque el menos importante) en el Grub me salen todos los sistemas operativos, el primero el Mint (el que está instalado en el USB) lo inicio, actualizo y todo funciona de maravilla.<br />
<br />
<br />
Apago, quito el USB y arranco el PC con normalidad..... Problema.... la instalación anterior se ha cargado el grub de mi PC y me sale la consola de Grub.  Vuelvo a poner el USB, le digo que arranque desde el USB y sale el Grub con el Mint que arranca sin problemas.<br />
<br />
<br />
Pongo otra vez el USB live y con boot-repair arreglo el grub de mi PC. El PC ya arranca sin problemas, como antes, pero si pongo el USB con Mint, aunque a la BIOS le diga que arranque desde el USB sale el grub de mi PC, Mint no sale por ningun sitio, como si no existiera.<br />
<br />
<br />
Ya he hecho el proceso 4 veces por si me hubiera equivocado en algo, pero siempre tengo el mismo resultado.<br />
<br />
<br />
¿alguna sugerencia?<br />
<br />
<br />
Gracias por todo y saludos.]]></description>
			<content:encoded><![CDATA[Saludos.<br />
<br />
<br />
Estoy intentando instalar Linux Mint en un USB, no el live, el SO completo, y me es imposible, no sé que ocurre con el cargador de arranque.<br />
<br />
<br />
Os pongo en antecedentes, mi PC tiene instalados 2 discos duros, uno con win y otro de 2 TB donde tengo linux y otra partición para compartir archivos entre los 2 SO.<br />
<br />
<br />
Grabo en un USB la versión live de Mint y la arranco , pongo el USB donde quiero instalarlo y clico para iniciar la instalación.<br />
<br />
<br />
En en paso donde pregunta donde instalarlo le doy a "otras opciones" para elegirlo manualmente.<br />
<br />
<br />
Me salen 4 dispositivos:<br />
<br />
/dev/sda --- Uno de los discos duros de mi PC<br />
<br />
/dev/sdb --- El otro disco duro de mi PC<br />
<br />
/dev/sdc --- El USB donde está la versión live de Mint<br />
<br />
/dev/sdd --- El USB donde quiero instalarlo<br />
<br />
<br />
En /dev/sdd empiezo a hacer las particiones:<br />
<br />
Una de 300MB de la clase EFI<br />
<br />
Otra de 2GB de intercambio<br />
<br />
El resto la dejo como "/" para instalar el SO.<br />
<br />
En donde pregunta donde poner el sector de arranque selecciono /dev/sdd<br />
<br />
<br />
Lo instala sin problemas, reinicio, le digo que arranque desde el usb y ahí empieza el primer problema (aunque el menos importante) en el Grub me salen todos los sistemas operativos, el primero el Mint (el que está instalado en el USB) lo inicio, actualizo y todo funciona de maravilla.<br />
<br />
<br />
Apago, quito el USB y arranco el PC con normalidad..... Problema.... la instalación anterior se ha cargado el grub de mi PC y me sale la consola de Grub.  Vuelvo a poner el USB, le digo que arranque desde el USB y sale el Grub con el Mint que arranca sin problemas.<br />
<br />
<br />
Pongo otra vez el USB live y con boot-repair arreglo el grub de mi PC. El PC ya arranca sin problemas, como antes, pero si pongo el USB con Mint, aunque a la BIOS le diga que arranque desde el USB sale el grub de mi PC, Mint no sale por ningun sitio, como si no existiera.<br />
<br />
<br />
Ya he hecho el proceso 4 veces por si me hubiera equivocado en algo, pero siempre tengo el mismo resultado.<br />
<br />
<br />
¿alguna sugerencia?<br />
<br />
<br />
Gracias por todo y saludos.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Script bash, copias de seguridad de archivos o directorios en hosting.]]></title>
			<link>https://chujalt.com/thread-39.html</link>
			<pubDate>Sun, 14 Mar 2021 19:19:01 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-39.html</guid>
			<description><![CDATA[Saludos.<br />
<br />
Hay ocasiones en la que necesitamos hacer una copia de seguridad, o backup, de archivos o directorios que tenemos alojados en un hosting o servidor, como por ejemplo en un foro mybb, u otros, en los que si realiza copias de respaldo de las bases de datos, pero que si hacemos modificaciones desde el panel de administrador o moderador y por cualquier causa perdemos o estropeamos cualquier archivo o configuración es conveniente tener una copia lo mas actualizada posible de esos archivos.<br />
<br />
El script nos creará un archivo comprimido, cuyo nombre es la fecha y hora de su creación, del archivo o directorio indicado, de manera recursiva, es decir, si elegimos un directorio que a su vez contiene subdirectorios respetará esta estructura.<br />
<br />
Al iniciar el script nos hará 4 preguntas:<br />
<br />
1. <span style="font-weight: bold;" class="mycode_b">Usuario: </span>El usuario de nuestra cuenta ftp en el servidor o hosting.<br />
<br />
2. <span style="font-weight: bold;" class="mycode_b">Contraseña:</span> La contraseña de nuestra cuenta ftp en el servidor o hosting.<br />
<br />
3. <span style="font-weight: bold;" class="mycode_b">Ruta de donde queremos hacer la copia de seguridad:</span> La ruta se pondrá sin la cabecera http, es decir, sin http://<br />
Ejemplo, vamos suponer que quiero hacer una copia de mi foro que lo tengo en mi hosting en un directorio llamado foro, entonces  pondríamos midominio.com/www/foro. las www las pongo porque en los hosting el directorio donde se encuentran los archivos y directorios donde están alojados los sitios web se llaman www o public_html.<br />
<br />
4. <span style="font-weight: bold;" class="mycode_b">Profundidad: </span>Número de directorios, a partir del dominio principal, que ha de recorrer hasta llegar el directorio o archivos que queremos hacer el backup. En el ejemplo anterior, midominio.com/www/foro, la profundidad sería <span style="font-weight: bold;" class="mycode_b">2</span><br />
<br />
<br />
<br />
El script se ha de ejecutar en la ubicación donde queremos la copia de seguridad.<br />
Si ocurre algún tipo de error en la conexión nos lo dirá.<br />
Si no funciona comprobar que tienen permisos de ejecución.<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Enlace de descarga: </span><a href="http://www.chujalt.com/respaldo_v2.tar" target="_blank" rel="noopener" class="mycode_url">PULSAR AQUI</a>]]></description>
			<content:encoded><![CDATA[Saludos.<br />
<br />
Hay ocasiones en la que necesitamos hacer una copia de seguridad, o backup, de archivos o directorios que tenemos alojados en un hosting o servidor, como por ejemplo en un foro mybb, u otros, en los que si realiza copias de respaldo de las bases de datos, pero que si hacemos modificaciones desde el panel de administrador o moderador y por cualquier causa perdemos o estropeamos cualquier archivo o configuración es conveniente tener una copia lo mas actualizada posible de esos archivos.<br />
<br />
El script nos creará un archivo comprimido, cuyo nombre es la fecha y hora de su creación, del archivo o directorio indicado, de manera recursiva, es decir, si elegimos un directorio que a su vez contiene subdirectorios respetará esta estructura.<br />
<br />
Al iniciar el script nos hará 4 preguntas:<br />
<br />
1. <span style="font-weight: bold;" class="mycode_b">Usuario: </span>El usuario de nuestra cuenta ftp en el servidor o hosting.<br />
<br />
2. <span style="font-weight: bold;" class="mycode_b">Contraseña:</span> La contraseña de nuestra cuenta ftp en el servidor o hosting.<br />
<br />
3. <span style="font-weight: bold;" class="mycode_b">Ruta de donde queremos hacer la copia de seguridad:</span> La ruta se pondrá sin la cabecera http, es decir, sin http://<br />
Ejemplo, vamos suponer que quiero hacer una copia de mi foro que lo tengo en mi hosting en un directorio llamado foro, entonces  pondríamos midominio.com/www/foro. las www las pongo porque en los hosting el directorio donde se encuentran los archivos y directorios donde están alojados los sitios web se llaman www o public_html.<br />
<br />
4. <span style="font-weight: bold;" class="mycode_b">Profundidad: </span>Número de directorios, a partir del dominio principal, que ha de recorrer hasta llegar el directorio o archivos que queremos hacer el backup. En el ejemplo anterior, midominio.com/www/foro, la profundidad sería <span style="font-weight: bold;" class="mycode_b">2</span><br />
<br />
<br />
<br />
El script se ha de ejecutar en la ubicación donde queremos la copia de seguridad.<br />
Si ocurre algún tipo de error en la conexión nos lo dirá.<br />
Si no funciona comprobar que tienen permisos de ejecución.<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Enlace de descarga: </span><a href="http://www.chujalt.com/respaldo_v2.tar" target="_blank" rel="noopener" class="mycode_url">PULSAR AQUI</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Música en Grub.]]></title>
			<link>https://chujalt.com/thread-38.html</link>
			<pubDate>Sun, 14 Mar 2021 19:18:06 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-38.html</guid>
			<description><![CDATA[Saludos....<br />
<br />
Es una tontería, pero no deja de estar gracioso.... para poner una musiquilla cuando se inicia el PC...  <img src="https://chujalt.com/images/smilies/tongue.png" alt="Lengua" title="Lengua" class="smilie smilie_5" /> <br />
<br />
En en un terminal<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo bash -c 'echo "GRUB_INIT_TUNE=&#92;"480 440 4 440 4 440 4 349 3 523 1 440 4 349 3 523 1 440 8 659 4 659 4 659 4 698 3 523 1 415 4 349 3 523 1 440 8&#92;"" &gt;&gt; /etc/default/grub &amp;&amp; update-grub'</code></div></div><br />
En este caso es la música de la estrella de la muerte de la guerra de las galaxias... hay mas, Mario bross, etc, ya las iré poniendo.<br />
<br />
Ahora cada vez que enciendas el ordenador sonara está oscura melodía <img src="https://chujalt.com/images/smilies/rolleyes.png" alt="Rodar ojos" title="Rodar ojos" class="smilie smilie_6" /><br />
<br />
<br />
Para quitar la melodía:<br />
<br />
abrir un terminal y loguearse como root<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo su</code></div></div><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sed -e '/GRUB_INIT_TUNE/d' /etc/default/grub &gt; /etc/default/grub.tmp &amp;&amp; mv /etc/default/grub.tmp /etc/default/grub &amp;&amp; update-grub</code></div></div><br />
Y ya está... ya la hemos quitado.... saludos]]></description>
			<content:encoded><![CDATA[Saludos....<br />
<br />
Es una tontería, pero no deja de estar gracioso.... para poner una musiquilla cuando se inicia el PC...  <img src="https://chujalt.com/images/smilies/tongue.png" alt="Lengua" title="Lengua" class="smilie smilie_5" /> <br />
<br />
En en un terminal<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo bash -c 'echo "GRUB_INIT_TUNE=&#92;"480 440 4 440 4 440 4 349 3 523 1 440 4 349 3 523 1 440 8 659 4 659 4 659 4 698 3 523 1 415 4 349 3 523 1 440 8&#92;"" &gt;&gt; /etc/default/grub &amp;&amp; update-grub'</code></div></div><br />
En este caso es la música de la estrella de la muerte de la guerra de las galaxias... hay mas, Mario bross, etc, ya las iré poniendo.<br />
<br />
Ahora cada vez que enciendas el ordenador sonara está oscura melodía <img src="https://chujalt.com/images/smilies/rolleyes.png" alt="Rodar ojos" title="Rodar ojos" class="smilie smilie_6" /><br />
<br />
<br />
Para quitar la melodía:<br />
<br />
abrir un terminal y loguearse como root<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo su</code></div></div><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sed -e '/GRUB_INIT_TUNE/d' /etc/default/grub &gt; /etc/default/grub.tmp &amp;&amp; mv /etc/default/grub.tmp /etc/default/grub &amp;&amp; update-grub</code></div></div><br />
Y ya está... ya la hemos quitado.... saludos]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cambiar icono de carpetas.]]></title>
			<link>https://chujalt.com/thread-37.html</link>
			<pubDate>Sun, 14 Mar 2021 19:16:51 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-37.html</guid>
			<description><![CDATA[Saludos.<br />
<br />
<br />
Aunque ya se que el propio sistema operativo nos da la oportunidad de personalizar los iconos de las carpetas, he hecho un script en bash desde el cual podremos cambiar la imagen de las carpetas que queramos.<br />
<br />
El script lo he hecho y probado bajo ubuntu 12.04 y gestor nautilus y nemo (en los dos funciona), también en Ubuntu 14.04<br />
<br />
Su uso es sencillo:<br />
<ol type="1" class="mycode_list"><li>Se ejecuta<br />
</li>
<li>Nos pide que seleccionemos la carpeta que queremos cambiar la imagen<br />
</li>
<li>Nos pide que seleccionemos la imagen para nuestra carpeta (tiene que ser jpg o png)<br />
</li>
<li>Ya está... ya está el icono cambiado<br />
</li>
<li>Nos pregunta si queremos seguir cambiando iconos o salir del programa<br />
</li>
</ol>
<br />
Una captura de pantalla:<br />
<br />
<div style="text-align: center;" class="mycode_align"><img src="http://chujalt.com/linux/cambioicon.png" loading="lazy"  alt="[Imagen: cambioicon.png]" class="mycode_img img-responsive" /></div>
<br />
El script lo podeis bajar de <a href="http://www.chujalt.com/linux/cambiar_icono.zip" target="_blank" rel="noopener" class="mycode_url">AQUI</a><br />
<br />
Bueno.. espero que a alguien le sirva de algo <img src="https://chujalt.com/images/smilies/wink.png" alt="Guiño" title="Guiño" class="smilie smilie_2" /><br />
<br />
Saludos]]></description>
			<content:encoded><![CDATA[Saludos.<br />
<br />
<br />
Aunque ya se que el propio sistema operativo nos da la oportunidad de personalizar los iconos de las carpetas, he hecho un script en bash desde el cual podremos cambiar la imagen de las carpetas que queramos.<br />
<br />
El script lo he hecho y probado bajo ubuntu 12.04 y gestor nautilus y nemo (en los dos funciona), también en Ubuntu 14.04<br />
<br />
Su uso es sencillo:<br />
<ol type="1" class="mycode_list"><li>Se ejecuta<br />
</li>
<li>Nos pide que seleccionemos la carpeta que queremos cambiar la imagen<br />
</li>
<li>Nos pide que seleccionemos la imagen para nuestra carpeta (tiene que ser jpg o png)<br />
</li>
<li>Ya está... ya está el icono cambiado<br />
</li>
<li>Nos pregunta si queremos seguir cambiando iconos o salir del programa<br />
</li>
</ol>
<br />
Una captura de pantalla:<br />
<br />
<div style="text-align: center;" class="mycode_align"><img src="http://chujalt.com/linux/cambioicon.png" loading="lazy"  alt="[Imagen: cambioicon.png]" class="mycode_img img-responsive" /></div>
<br />
El script lo podeis bajar de <a href="http://www.chujalt.com/linux/cambiar_icono.zip" target="_blank" rel="noopener" class="mycode_url">AQUI</a><br />
<br />
Bueno.. espero que a alguien le sirva de algo <img src="https://chujalt.com/images/smilies/wink.png" alt="Guiño" title="Guiño" class="smilie smilie_2" /><br />
<br />
Saludos]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Importación masiva de archivos csv a base de datos MySql.]]></title>
			<link>https://chujalt.com/thread-36.html</link>
			<pubDate>Sun, 14 Mar 2021 19:15:16 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-36.html</guid>
			<description><![CDATA[<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Saludos.</span></span><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Hay bases de datos públicas las cuales te las puedes bajar, por ejemplo el INE (Instituto Nacional de Estadística), y trabajar con ellas y hacer diversos estudios. Lo malo es que para trabajar con estos datos, por lo general, necesitas programas de pago y que sólo funcionan bajo windows. Pero también te dan la opción de bajártelos en formato csv y así poder importarlos a base de datos MySql.</span></span><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Me surgió la pega de que al ser bases de datos muy grandes el gestor de MySql, phpmyadmin, no puede con ellas, da errores múltiples, de tiempo de ejecución, etc, y después de hacer varias configuraciónes en php.ini seguía sin poder importarlas.</span></span><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Encontré por la red un script en bash para hacer esa importación masiva (mérito a su autor), pero me seguía fallando y le hice unos "retoques" y ahora me funciona de maravilla. En el script hay que poner el nombre de la base de datos que has creado previamente (ten en cuenta que vas a importar tablas), el usuario de la base de datos, la contraseña y la ruta del directorio donde están los archivos csv, ya sea un archivo o varios, te creará una tabla por cada archivo que haya.</span></span><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Aquí el script:</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
<br />
<br />
# By brian@brianyoungblood.com to keep original files and import based on tab delimited data<br />
# orginal script based on work from Eric London. http://ericlondon.com/bash-shell-script-import-large-number-csv-files-mysql<br />
<br />
# show commands being executed, per debug<br />
#set -x<br />
<br />
# define database connectivity<br />
_db="nombre_bade_de_datos"<br />
_db_user="usuario"<br />
_db_password="contraseña"<br />
<br />
# define directory containing CSV files<br />
_csv_directory="/directorio/donde/estan/csv"<br />
<br />
# go into directory<br />
cd &#36;_csv_directory<br />
<br />
# get a list of CSV files in directory<br />
_csv_files=`ls -1 *.csv`<br />
<br />
# loop through csv files<br />
for _csv_file in &#36;{_csv_files[@]}<br />
do<br />
<br />
# remove file extension<br />
_csv_file_extensionless=`echo &#36;_csv_file | sed 's/&#92;(.*&#92;)&#92;..*/&#92;1/'`<br />
<br />
# define table name<br />
_table_name="&#36;{_csv_file_extensionless}"<br />
<br />
# get header columns from CSV file, creándola como un array<br />
_header_columns=(`head -1 &#36;_csv_directory/&#36;_csv_file | tr ',' '&#92;n' | sed 's/^"//' | sed 's/"&#36;//' | sed 's/ /_/g'`)<br />
# Crea un array con los datos de la segunda fila<br />
_header_columns_numero_texto=(`head -2 &#36;_csv_directory/&#36;_csv_file | tail -1 | tr ',' '&#92;n' | sed 's/^"//' | sed 's/"&#36;//' | sed 's/ /_/g'`)<br />
_header_columns_string=`head -1 &#36;_csv_directory/&#36;_csv_file | sed 's/ /_/g' | sed 's/"//g'`<br />
echo "header============&gt;&#36;{_header_columns[@]}"<br />
echo "header============&gt;&#36;_header_columns_string"<br />
# ensure table exists<br />
mysql -u &#36;_db_user -p&#36;_db_password &#36;_db &lt;&lt; eof<br />
CREATE TABLE IF NOT EXISTS &#92;`&#36;_table_name&#92;` (<br />
id int(11) NOT NULL auto_increment,<br />
PRIMARY KEY (id)<br />
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_spanish2_ci<br />
eof<br />
# Se hace un bucle for con el numero de campos, si el dato de la segunda fila es numerico o texto asi crea el campo<br />
for (( c=0; c&lt;&#36;{#_header_columns[@]}; c++ ))<br />
do<br />
if [[ &#36;{_header_columns_numero_texto[&#36;c]} =~ [[:alpha:]] ]] ; then<br />
mysql -u &#36;_db_user -p&#36;_db_password &#36;_db --execute="alter table &#36;_table_name add column &#36;{_header_columns[&#36;c]} text"<br />
else<br />
mysql -u &#36;_db_user -p&#36;_db_password &#36;_db --execute="alter table &#36;_table_name add column &#36;{_header_columns[&#36;c]} Float"<br />
fi<br />
done<br />
<br />
<br />
# import csv into mysql<br />
mysqlimport --local --ignore-lines=1 --fields-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by="&#92;n" --columns=&#36;_header_columns_string -u &#36;_db_user -p&#36;_db_password &#36;_db &#36;_csv_directory/&#36;_csv_file<br />
<br />
done<br />
exit</code></div></div><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Edito: He mejorado un poco el script. Antes creaba todos los campos tipo texto.... ahora detecta si los datos son texto o numero y así los crea.</span></span><br />
<br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Bueno, espero que a alguien le sirva y le funcione bien.</span></span><br />
<br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Saludos</span></span>]]></description>
			<content:encoded><![CDATA[<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Saludos.</span></span><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Hay bases de datos públicas las cuales te las puedes bajar, por ejemplo el INE (Instituto Nacional de Estadística), y trabajar con ellas y hacer diversos estudios. Lo malo es que para trabajar con estos datos, por lo general, necesitas programas de pago y que sólo funcionan bajo windows. Pero también te dan la opción de bajártelos en formato csv y así poder importarlos a base de datos MySql.</span></span><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Me surgió la pega de que al ser bases de datos muy grandes el gestor de MySql, phpmyadmin, no puede con ellas, da errores múltiples, de tiempo de ejecución, etc, y después de hacer varias configuraciónes en php.ini seguía sin poder importarlas.</span></span><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Encontré por la red un script en bash para hacer esa importación masiva (mérito a su autor), pero me seguía fallando y le hice unos "retoques" y ahora me funciona de maravilla. En el script hay que poner el nombre de la base de datos que has creado previamente (ten en cuenta que vas a importar tablas), el usuario de la base de datos, la contraseña y la ruta del directorio donde están los archivos csv, ya sea un archivo o varios, te creará una tabla por cada archivo que haya.</span></span><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Aquí el script:</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>#!/bin/bash<br />
<br />
<br />
# By brian@brianyoungblood.com to keep original files and import based on tab delimited data<br />
# orginal script based on work from Eric London. http://ericlondon.com/bash-shell-script-import-large-number-csv-files-mysql<br />
<br />
# show commands being executed, per debug<br />
#set -x<br />
<br />
# define database connectivity<br />
_db="nombre_bade_de_datos"<br />
_db_user="usuario"<br />
_db_password="contraseña"<br />
<br />
# define directory containing CSV files<br />
_csv_directory="/directorio/donde/estan/csv"<br />
<br />
# go into directory<br />
cd &#36;_csv_directory<br />
<br />
# get a list of CSV files in directory<br />
_csv_files=`ls -1 *.csv`<br />
<br />
# loop through csv files<br />
for _csv_file in &#36;{_csv_files[@]}<br />
do<br />
<br />
# remove file extension<br />
_csv_file_extensionless=`echo &#36;_csv_file | sed 's/&#92;(.*&#92;)&#92;..*/&#92;1/'`<br />
<br />
# define table name<br />
_table_name="&#36;{_csv_file_extensionless}"<br />
<br />
# get header columns from CSV file, creándola como un array<br />
_header_columns=(`head -1 &#36;_csv_directory/&#36;_csv_file | tr ',' '&#92;n' | sed 's/^"//' | sed 's/"&#36;//' | sed 's/ /_/g'`)<br />
# Crea un array con los datos de la segunda fila<br />
_header_columns_numero_texto=(`head -2 &#36;_csv_directory/&#36;_csv_file | tail -1 | tr ',' '&#92;n' | sed 's/^"//' | sed 's/"&#36;//' | sed 's/ /_/g'`)<br />
_header_columns_string=`head -1 &#36;_csv_directory/&#36;_csv_file | sed 's/ /_/g' | sed 's/"//g'`<br />
echo "header============&gt;&#36;{_header_columns[@]}"<br />
echo "header============&gt;&#36;_header_columns_string"<br />
# ensure table exists<br />
mysql -u &#36;_db_user -p&#36;_db_password &#36;_db &lt;&lt; eof<br />
CREATE TABLE IF NOT EXISTS &#92;`&#36;_table_name&#92;` (<br />
id int(11) NOT NULL auto_increment,<br />
PRIMARY KEY (id)<br />
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_spanish2_ci<br />
eof<br />
# Se hace un bucle for con el numero de campos, si el dato de la segunda fila es numerico o texto asi crea el campo<br />
for (( c=0; c&lt;&#36;{#_header_columns[@]}; c++ ))<br />
do<br />
if [[ &#36;{_header_columns_numero_texto[&#36;c]} =~ [[:alpha:]] ]] ; then<br />
mysql -u &#36;_db_user -p&#36;_db_password &#36;_db --execute="alter table &#36;_table_name add column &#36;{_header_columns[&#36;c]} text"<br />
else<br />
mysql -u &#36;_db_user -p&#36;_db_password &#36;_db --execute="alter table &#36;_table_name add column &#36;{_header_columns[&#36;c]} Float"<br />
fi<br />
done<br />
<br />
<br />
# import csv into mysql<br />
mysqlimport --local --ignore-lines=1 --fields-enclosed-by='"' --fields-terminated-by=',' --lines-terminated-by="&#92;n" --columns=&#36;_header_columns_string -u &#36;_db_user -p&#36;_db_password &#36;_db &#36;_csv_directory/&#36;_csv_file<br />
<br />
done<br />
exit</code></div></div><br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Edito: He mejorado un poco el script. Antes creaba todos los campos tipo texto.... ahora detecta si los datos son texto o numero y así los crea.</span></span><br />
<br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Bueno, espero que a alguien le sirva y le funcione bien.</span></span><br />
<br />
<br />
<span style="color: #222222;" class="mycode_color"><span style="font-family: 'Helvetica Neue', Arial, Verdana, sans-serif;" class="mycode_font">Saludos</span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Encriptador de archivos y directorios.]]></title>
			<link>https://chujalt.com/thread-35.html</link>
			<pubDate>Sun, 14 Mar 2021 19:09:23 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-35.html</guid>
			<description><![CDATA[Saludos.<br />
<br />
Todos tenemos en el ordenador archivos que no nos gusta que estén al alcance de cualquiera. Por ejemplo, yo tengo en uno todo los usuarios y contraseñas de todos los sitios que me meto en internet (ya se que no es aconsejable, pero ya son tantos que no me acuerdo).<br />
<br />
He creado un programa muy simple que encripta cualquier tipo de archivo, el cual nos pide una contraseña para encriptar y, obviamente, la misma para desencriptar.<br />
<br />
El programa hace una doble encriptación, openssl -aes-256-cbc y base64. A su vez la contraseña que introduzcamos también es encriptada mediante md5.<br />
<br />
ACTUALIZACIÓN : Ahora también te da la opción de encriptar / desencriptar directorios completos.<br />
<br />
Bueno... si alguno lo quiere probar <a href="http://chujalt.com/encripjalt_4.zip" target="_blank" rel="noopener" class="mycode_url">PULSA AQUI</a><br />
<br />
Saludos]]></description>
			<content:encoded><![CDATA[Saludos.<br />
<br />
Todos tenemos en el ordenador archivos que no nos gusta que estén al alcance de cualquiera. Por ejemplo, yo tengo en uno todo los usuarios y contraseñas de todos los sitios que me meto en internet (ya se que no es aconsejable, pero ya son tantos que no me acuerdo).<br />
<br />
He creado un programa muy simple que encripta cualquier tipo de archivo, el cual nos pide una contraseña para encriptar y, obviamente, la misma para desencriptar.<br />
<br />
El programa hace una doble encriptación, openssl -aes-256-cbc y base64. A su vez la contraseña que introduzcamos también es encriptada mediante md5.<br />
<br />
ACTUALIZACIÓN : Ahora también te da la opción de encriptar / desencriptar directorios completos.<br />
<br />
Bueno... si alguno lo quiere probar <a href="http://chujalt.com/encripjalt_4.zip" target="_blank" rel="noopener" class="mycode_url">PULSA AQUI</a><br />
<br />
Saludos]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Esteganografía.]]></title>
			<link>https://chujalt.com/thread-34.html</link>
			<pubDate>Sun, 14 Mar 2021 19:08:18 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-34.html</guid>
			<description><![CDATA[Saludos amigos.<br />
<br />
Siempre me ha interesado la esteganografía, que trata del estudio y aplicación de técnicas que permiten ocultar mensajes u objetos, dentro de otros, de modo que no se perciba su existencia.<br />
<br />
Técnicas hay varias, de mas complejas a mas simples. Como curiosidad, he hecho un script en bash que nos permite insertar un mensaje de texto en un archivo multimedia (jpg, mp3, etc) sin que se corrompa el archivo, es decir, después de introducirle el mensaje la foto se seguirá viendo, el mp3 se seguirá escuchando, etc.<br />
<br />
Como he dicho, hay varias técnicas, algunas muy sofisticadas, yo he utilizado la mas simple, que es introducir el mensaje al final del archivo, por lo que no penséis que su ocultación es 100%, con un editor hexadecimal se podría leer el mensaje.<br />
<br />
Su objetivo no es la ocultación de mensajes, se puede poner una "firma" a ese archivo y así saber si un archivo igual es el nuestro o no.<br />
<br />
Yo no tengo ningún interés en ocultar mensajes (ni soy espía, ni delincuente y no tengo nada que ocultar), en lo de firmar el archivo si que me interesa, lo he hecho a modo de curiosidad y de aprender, para su uso didáctico.<br />
<br />
El script te da tres opciones, insertar un mensaje, leer un mensaje y borrar un mensaje.<br />
<br />
<br />
Hay que tener varias consideraciones:<br />
<br />
El script utiliza los cuadros de dialogo Zenity, por lo que si veis que no os funciona tendréis que instalarlo "sudo apt-get install zenity".<br />
<br />
El archivo a insertar el texto no debe tener espacios en blanco, ni guiones (-) ni símbolos extraños porque si no, no encontrará la ruta. Si puede tener guión bajo (_).<br />
<br />
Aunque ya se dice en el script, si el mensaje a introducir tiene saltos de linea, lo que hay que hacer es escribirlo en un archivo de texto y hacer un copia - pega, porque si cuando está en cuadro de texto para introducir el mensaje le das a intro, éste interpreta que has apretado Aceptar.<br />
<br />
<br />
EDITO:<br />
He realizado una mejora, ahora el texto a introducir se hace encriptado.<br />
Se realiza una doble encriptación, openssl aes-256-cbc con contraseña (el programa te la pide) y base64.<br />
<br />
<br />
Bueno, si alguien lo quiere probar, aquí lo tiene <br />
<br />
Con encriptacion:<a href="http://chujalt.com/Estegan2.zip" target="_blank" rel="noopener" class="mycode_url"> AQUI</a><br />
<br />
Sin encriptacion: <a href="http://chujalt.com/Estegan.zip" target="_blank" rel="noopener" class="mycode_url">AQUI</a><br />
<br />
Saludos.]]></description>
			<content:encoded><![CDATA[Saludos amigos.<br />
<br />
Siempre me ha interesado la esteganografía, que trata del estudio y aplicación de técnicas que permiten ocultar mensajes u objetos, dentro de otros, de modo que no se perciba su existencia.<br />
<br />
Técnicas hay varias, de mas complejas a mas simples. Como curiosidad, he hecho un script en bash que nos permite insertar un mensaje de texto en un archivo multimedia (jpg, mp3, etc) sin que se corrompa el archivo, es decir, después de introducirle el mensaje la foto se seguirá viendo, el mp3 se seguirá escuchando, etc.<br />
<br />
Como he dicho, hay varias técnicas, algunas muy sofisticadas, yo he utilizado la mas simple, que es introducir el mensaje al final del archivo, por lo que no penséis que su ocultación es 100%, con un editor hexadecimal se podría leer el mensaje.<br />
<br />
Su objetivo no es la ocultación de mensajes, se puede poner una "firma" a ese archivo y así saber si un archivo igual es el nuestro o no.<br />
<br />
Yo no tengo ningún interés en ocultar mensajes (ni soy espía, ni delincuente y no tengo nada que ocultar), en lo de firmar el archivo si que me interesa, lo he hecho a modo de curiosidad y de aprender, para su uso didáctico.<br />
<br />
El script te da tres opciones, insertar un mensaje, leer un mensaje y borrar un mensaje.<br />
<br />
<br />
Hay que tener varias consideraciones:<br />
<br />
El script utiliza los cuadros de dialogo Zenity, por lo que si veis que no os funciona tendréis que instalarlo "sudo apt-get install zenity".<br />
<br />
El archivo a insertar el texto no debe tener espacios en blanco, ni guiones (-) ni símbolos extraños porque si no, no encontrará la ruta. Si puede tener guión bajo (_).<br />
<br />
Aunque ya se dice en el script, si el mensaje a introducir tiene saltos de linea, lo que hay que hacer es escribirlo en un archivo de texto y hacer un copia - pega, porque si cuando está en cuadro de texto para introducir el mensaje le das a intro, éste interpreta que has apretado Aceptar.<br />
<br />
<br />
EDITO:<br />
He realizado una mejora, ahora el texto a introducir se hace encriptado.<br />
Se realiza una doble encriptación, openssl aes-256-cbc con contraseña (el programa te la pide) y base64.<br />
<br />
<br />
Bueno, si alguien lo quiere probar, aquí lo tiene <br />
<br />
Con encriptacion:<a href="http://chujalt.com/Estegan2.zip" target="_blank" rel="noopener" class="mycode_url"> AQUI</a><br />
<br />
Sin encriptacion: <a href="http://chujalt.com/Estegan.zip" target="_blank" rel="noopener" class="mycode_url">AQUI</a><br />
<br />
Saludos.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Personalización de la ventana de terminal.]]></title>
			<link>https://chujalt.com/thread-33.html</link>
			<pubDate>Sun, 14 Mar 2021 19:04:18 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-33.html</guid>
			<description><![CDATA[Saludos.<br />
<br />
Aquí os explico como poder personalizar la ventana del terminal a nuestro gusto, no es cambiar el color de fondo o el color de las letras, os explico....<br />
<br />
Hay que editar un archivo oculto que está en vuestra carpeta persona llamada <span style="font-weight: bold;" class="mycode_b">.bashrc</span>. Lo abrimos con el gedit o cualquier otro programa de edición de texto y nos vamos al final, añadimos una nueva linea y ponemos, por ejemplo yo tengo <br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>play mario.ogg<br />
clear<br />
echo -e "&#92;e[0;31mSesion de terminal iniciada por &#36;USER&#92;e[0m";<br />
echo "  _____  __ __  __  __     __  ___     __     ______";<br />
echo " / ___/ / // / / / / / __ / / / _ |   / /    /_  __/";<br />
echo "/ /__  / _  / / /_/ / / // / / __ |  / /__    / /   ";<br />
echo "&#92;___/ /_//_/  &#92;____/  &#92;___/ /_/ |_| /____/   /_/    ";<br />
echo "                                                    ";</code></div></div><br />
He puesto varias cosas para que veáis las posibilidades que tiene.<br />
La primera linea hace sonar la musiquita de Mario Bros (un par de segundos para que no se haga pesada).<br />
La segunda limpia el terminal.<br />
La tercera pone la frase puesta en los colores que querais, en mi caso rojo.<br />
Las demás son de Acsii art.<br />
<br />
<br />
El sitio donde hacer el acsii art <a href="http://patorjk.com/software/taag/#p=display&amp;f=Graffiti&amp;t=Type%20Something%20" target="_blank" rel="noopener" class="mycode_url">AQUI</a><br />
<br />
Si alguien quiere la musiquilla de Mario Bros se la paso <a href="http://chujalt.com/1/sonidos/mario.ogg" target="_blank" rel="noopener" class="mycode_url">AQUI</a><br />
<br />
Saludos]]></description>
			<content:encoded><![CDATA[Saludos.<br />
<br />
Aquí os explico como poder personalizar la ventana del terminal a nuestro gusto, no es cambiar el color de fondo o el color de las letras, os explico....<br />
<br />
Hay que editar un archivo oculto que está en vuestra carpeta persona llamada <span style="font-weight: bold;" class="mycode_b">.bashrc</span>. Lo abrimos con el gedit o cualquier otro programa de edición de texto y nos vamos al final, añadimos una nueva linea y ponemos, por ejemplo yo tengo <br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>play mario.ogg<br />
clear<br />
echo -e "&#92;e[0;31mSesion de terminal iniciada por &#36;USER&#92;e[0m";<br />
echo "  _____  __ __  __  __     __  ___     __     ______";<br />
echo " / ___/ / // / / / / / __ / / / _ |   / /    /_  __/";<br />
echo "/ /__  / _  / / /_/ / / // / / __ |  / /__    / /   ";<br />
echo "&#92;___/ /_//_/  &#92;____/  &#92;___/ /_/ |_| /____/   /_/    ";<br />
echo "                                                    ";</code></div></div><br />
He puesto varias cosas para que veáis las posibilidades que tiene.<br />
La primera linea hace sonar la musiquita de Mario Bros (un par de segundos para que no se haga pesada).<br />
La segunda limpia el terminal.<br />
La tercera pone la frase puesta en los colores que querais, en mi caso rojo.<br />
Las demás son de Acsii art.<br />
<br />
<br />
El sitio donde hacer el acsii art <a href="http://patorjk.com/software/taag/#p=display&amp;f=Graffiti&amp;t=Type%20Something%20" target="_blank" rel="noopener" class="mycode_url">AQUI</a><br />
<br />
Si alguien quiere la musiquilla de Mario Bros se la paso <a href="http://chujalt.com/1/sonidos/mario.ogg" target="_blank" rel="noopener" class="mycode_url">AQUI</a><br />
<br />
Saludos]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Descubre si tu equipo Linux es vulnerable al Shellshock bug.]]></title>
			<link>https://chujalt.com/thread-32.html</link>
			<pubDate>Sun, 14 Mar 2021 19:02:16 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-32.html</guid>
			<description><![CDATA[Leemos en: <a href="http://es.gizmodo.com/como-saber-si-tu-equipo-mac-o-linux-es-vulnerable-a-sh-1639291632" target="_blank" rel="noopener" class="mycode_url">http://es.gizmodo.com/como-saber-si-tu-e...1639291632</a><br />
<br />
<hr class="mycode_hr" />
<br />
Shellshock Bash es una <a href="http://es.gizmodo.com/alertan-de-un-grave-fallo-de-seguridad-mas-extendido-qu-1638980420" target="_blank" rel="noopener" class="mycode_url">nueva vulnerabilidad</a> que permite inyectar código malicioso en equipos Mac o Linux y poner nuestro equipo en serio riesgo. El método que explicamos a continuación permite comprobar si un ordenador con esos sistemas operativos es vulnerable a esta nueva amenaza.<br />
<br />
Shellshock utiliza un código que afecta a la plataforma Bash de ejecución de comandos, y permite activar la ejecución remota de aplicaciones, modificar la configuración o acceder a archivos. Este código funciona solo en sistemas basados en UNIX, lo que significa que solo los equipos con sistemas operativos Apple o variantes de Linux son vulnerables.<br />
<br />
Para comprobar si somos vulnerables solo hay que abrir la aplicación Terminal, y copiar y pegar este código.<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>env x='() { :;}; echo vulnerable' bash -c 'echo hello'</code></div></div><br />
Si nuestro equipo <span style="font-weight: bold;" class="mycode_b">no es vulnerable</span>, debería salir un mensaje como este:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' hello</code></div></div><br />
En cambio, si <span style="font-weight: bold;" class="mycode_b">sí es vulnerable al ataque</span>, el mensaje que mostrará será:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>vulnerable hello</code></div></div><br />
Se puede comprobar qué versión de Bash nos afecta escribiendo:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>bash --version</code></div></div><br />
Si tenemos la versión 3.2.51 (1), necesitamos actualizar el software de Bash. En la mayor parte de sistemas operativos Linux ya se han lanzado parches para corregir la vulnerabilidad. Su aplicación depende de qué distribución se trate. En <a href="http://www.linuxnews.pro/patch-bash-shell-shock-centos-ubuntu/" target="_blank" rel="noopener" class="mycode_url">Linux News</a> han elaborado una pequeña guía para parchear Bash.<br />
<br />
En el caso de que tengamos OSX el error aún no se ha corregido mediante una actualización oficial. La única alternativa por el momento es actualizar Bash manualmente siguiendo la guía que ofrecen en Wonder How To. Para ello hay que instalar previamente la aplicación de desarrolladores Xcode, y después ejecutar en la aplicación Terminal los comandos que citan en orden. [vía Lifehacker]]]></description>
			<content:encoded><![CDATA[Leemos en: <a href="http://es.gizmodo.com/como-saber-si-tu-equipo-mac-o-linux-es-vulnerable-a-sh-1639291632" target="_blank" rel="noopener" class="mycode_url">http://es.gizmodo.com/como-saber-si-tu-e...1639291632</a><br />
<br />
<hr class="mycode_hr" />
<br />
Shellshock Bash es una <a href="http://es.gizmodo.com/alertan-de-un-grave-fallo-de-seguridad-mas-extendido-qu-1638980420" target="_blank" rel="noopener" class="mycode_url">nueva vulnerabilidad</a> que permite inyectar código malicioso en equipos Mac o Linux y poner nuestro equipo en serio riesgo. El método que explicamos a continuación permite comprobar si un ordenador con esos sistemas operativos es vulnerable a esta nueva amenaza.<br />
<br />
Shellshock utiliza un código que afecta a la plataforma Bash de ejecución de comandos, y permite activar la ejecución remota de aplicaciones, modificar la configuración o acceder a archivos. Este código funciona solo en sistemas basados en UNIX, lo que significa que solo los equipos con sistemas operativos Apple o variantes de Linux son vulnerables.<br />
<br />
Para comprobar si somos vulnerables solo hay que abrir la aplicación Terminal, y copiar y pegar este código.<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>env x='() { :;}; echo vulnerable' bash -c 'echo hello'</code></div></div><br />
Si nuestro equipo <span style="font-weight: bold;" class="mycode_b">no es vulnerable</span>, debería salir un mensaje como este:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' hello</code></div></div><br />
En cambio, si <span style="font-weight: bold;" class="mycode_b">sí es vulnerable al ataque</span>, el mensaje que mostrará será:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>vulnerable hello</code></div></div><br />
Se puede comprobar qué versión de Bash nos afecta escribiendo:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>bash --version</code></div></div><br />
Si tenemos la versión 3.2.51 (1), necesitamos actualizar el software de Bash. En la mayor parte de sistemas operativos Linux ya se han lanzado parches para corregir la vulnerabilidad. Su aplicación depende de qué distribución se trate. En <a href="http://www.linuxnews.pro/patch-bash-shell-shock-centos-ubuntu/" target="_blank" rel="noopener" class="mycode_url">Linux News</a> han elaborado una pequeña guía para parchear Bash.<br />
<br />
En el caso de que tengamos OSX el error aún no se ha corregido mediante una actualización oficial. La única alternativa por el momento es actualizar Bash manualmente siguiendo la guía que ofrecen en Wonder How To. Para ello hay que instalar previamente la aplicación de desarrolladores Xcode, y después ejecutar en la aplicación Terminal los comandos que citan en orden. [vía Lifehacker]]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Sacándole provecho a la consola de comandos.]]></title>
			<link>https://chujalt.com/thread-31.html</link>
			<pubDate>Sun, 14 Mar 2021 19:00:32 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-31.html</guid>
			<description><![CDATA[Saludos amigos, Android es básicamente linux, y éste tiene una poderosa herramienta, la consola de comandos o terminal, que la tenemos un poco olvidada. Desde aquí intentaré hacer una serie de artículos para aprender a aprovecharnos de esta poderosa herramienta y poder exprimir un poco mas a Android.<br />
<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: #0000CD;" class="mycode_color"><span style="font-size: large;" class="mycode_size">EL DIRECTORIO  /PROC</span></span></div>
<br />
El directorio /proc es un directorio extraño, contiene ficheros y mucha información, pero su archivos ocupan 0 bytes. Son archivos virtuales que nos dan información exacta de lo que está ocurriendo en la máquina en ese mismo instante y sobre la configuración de la misma. Son ficheros de solo lectura, excepto en /proc/sys, que también nos dejará tocar algunas configuraciones del Kernel, cosa peligrosa si no sabemos lo que estamos haciendo, aunque son cambios temporales, una vez reinicies la máquina volverá a sus valores originales. Todo esto sirve para hacer pruebas de configuraciones antes de hacer los cambios en los archivos definitivos.<br />
<br />
Antes de nada comentar que para ejecutar estos comandos tenemos que ser root y por supuesto un terminal (os lo podeis bajar del Google Play o cualquier aplicación para gestionar la Rom, tipo Rom Tool Box, disponen de terminal).<br />
<br />
<br />
Para loguearnos como root, abrimos un terminal,tecleamos<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>su</code></div></div><br />
Nos habrá cambiado el último símbolo de la línea &#36; por #, ya tenemos sesión de superusuario en el terminal.<br />
<br />
<br />
<br />
<br />
Para saber todos los archivos y directorios que tenemos disponibles en /proc<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>ls /proc</code></div></div><br />
Los números corresponden a procesos en ejecución y lo demás son los archivos y directorios disponibles.<br />
<br />
<br />
<br />
<br />
Información del uso de la memoria RAM<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/meminfo</code></div></div><br />
** Toda la información nos la da en Kilobytes.<br />
<br />
MemTotal — Nos informa de la cantidad total de RAM física.<br />
<br />
MemFree — Nos informa de la cantidad de RAM física sin utilizar por el sistema.<br />
<br />
Buffers — Nos informa de la cantidad de RAM física usada para los archivos de memoria intermedia.<br />
<br />
Cached — Nos informa de la cantidad de RAM física usada como memoria caché.<br />
<br />
SwapCached — Nos informa de la cantidad de swap usada como memoria caché.<br />
<br />
Active — Nos informa de la cantidad total de memoria intermedia o caché de página que está en uso activo. Esta es memoria que recientemente ha sido utilizada y que usualmente no se reclama para otros propósitos.<br />
<br />
Inactive — Nos informa de la cantidad total de memoria intermedia o caché de página que está libre y disponible. Esta es memoria que no se ha utilizado recientemente y que se puede reclamar para otros propósitos.<br />
<br />
HighTotal y HighFree — Nos informa de la cantidad total de memoria libre, que no está mapeada en el espacio del kernel. El valor HighTotal puede variar dependiendo del tipo de kernel utilizado.<br />
<br />
LowTotal y LowFree — Nos informa de la cantidad total de memoria libre implantada directamente en el espacio del kernel. El valor LowTotal puede cambiar dependiendo del tipo de kernel utilizado.<br />
<br />
…....<br />
<br />
<br />
<br />
<br />
Información de la CPU<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/cpuinfo</code></div></div><br />
Nos da la información exacta del procesador que tenemos, su tipo, hardware, su versión, etc.<br />
<br />
<br />
<br />
<br />
Información de las particiones.<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/partitions</code></div></div><br />
Nos da información sobre la asignación de bloques de particiones.<br />
<br />
<br />
major — Número principal (major number) del dispositivo con esta partición.<br />
<br />
minor — Número menor del dispositivo con esta partición. Separa las particiones en diferentes dispositivos físicos y los relaciona con el número al final del nombre de la partición.<br />
<br />
#blocks — Lista el número de bloques de disco físicos contenidos en una partición particular.<br />
<br />
Name — Nombre de la partición.<br />
<br />
<br />
<br />
<br />
Montajes en uso<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/mounts</code></div></div><br />
Este archivo proporciona una lista de todos los montajes en uso por el sistema.<br />
La primera columna especifica el dispositivo que está montado, la segunda revela el punto de montaje, la tercera indica el tipo de sistema de archivos y la cuarta si está montado en modo sólo lectura o sólo escritura.<br />
<br />
<br />
<br />
<br />
Para saber los módulos que se han cargado<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/modules</code></div></div><br />
Este archivo muestra una lista de todos los módulos cargados en el sistema.<br />
<br />
La primera columna contiene el nombre del módulo.<br />
<br />
La segunda columna se refiere al tamaño de la memoria del módulo, en bytes.<br />
<br />
La tercera columna lista cuántas instancias del módulo están cargadas actualmente. Un valor de cero representa un módulo sin cargar.<br />
<br />
La cuarta columna indica si el módulo depende de que otro módulo esté presente para poder funcionar, y lista esos otros módulos.<br />
<br />
La quinta columna lista en qué estado de carga se encuentra el módulo: Live, Loading o Unloading son los únicos valores posibles.<br />
<br />
La sexta columna lista el desplazamiento de memoria del kernel actual para el módulo cargado. Esta información puede ser útil para propósitos de depuración o para herramientas de perfiles.<br />
<br />
<br />
<br />
<br />
Para saber versión de Kernel<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/version</code></div></div><br />
Este archivo muestra las versión del kernel de Linux y gcc en uso.<br />
<br />
<br />
<br />
<br />
Para sabe dispositivos de caracteres y de bloque configurados<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/devices</code></div></div><br />
Este archivo muestra los diversos dispositivos de caracteres y de bloque actualmente configurados (no incluye dispositivos cuyos módulos no están cargados).<br />
La salida de datos desde /proc /devices incluye el número mayor y el nombre del dispositivo y se divide en dos secciones: Dispositivos de caracteres y Dispositivos de bloque.<br />
Los dispositivos de caracteres son similares a los dispositivos de bloque, excepto por dos diferencias básicas:<br />
1.  Los dispositivos de caracteres no requieren buffering. Los dispositivos de bloque disponen de una memoria intermedia o buffer que les permite ordenar las peticiones antes de tratar con ellas. Esto es muy importante para los dispositivos diseñados para guardar información — tales como discos duros — porque la habilidad de ordenar la información antes de escribirla en el dispositivo permite que ésta se almacene de forma más eficiente.<br />
2. Los dispositivos de caracteres envían datos sin un tamaño preconfigurado. Los dispositivos de bloque pueden enviar y recibir información en bloques de un tamaño particular, configurable por dispositivo.<br />
<br />
<br />
<br />
<br />
Para saber los tipos del sistema de archivos soportados por el kernel<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/filesystems</code></div></div><br />
La primera columna significa si el sistema de archivos está montado en un dispositivo de bloque. Aquellos que comiencen con nodev no están montados en un dispositivo. La segunda columna lista el nombre de los sistemas de archivos soportados.<br />
El comando mount circula por estos sistemas de archivos listados aquí cuando uno no está especificado como un argumento.<br />
<br />
<br />
<br />
<br />
Para saber los controladores registrados<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/misc</code></div></div><br />
La primera columna es el número menor (minor) de cada dispositivo y la segunda le muestra el controlador en uso.<br />
<br />
<br />
<br />
<br />
Para saber el tiempo que lleva encendido el sistema desde el último reinicio<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/uptime</code></div></div><br />
El primer número le indica el número total de segundos que el sistema ha estado en funcionamiento. El segundo indica cuánto de ese tiempo, también en segundos, la máquina ha estado inactiva.<br />
<br />
<br />
<br />
<br />
..... Hay muchos mas comandos y directorios de donde sacar información del sistema, yo sólo he puesto los que me parecen mas interesantes. en los directorios /proc/net y /proc/sys (hay muchos mas) se puede sacar información sobre las conexiones de internet e información del kernel, respectivamente. Ojo, esto son directorios, para ver la información disponible habría que teclear<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cd /proc/net<br />
ls</code></div></div><br />
para que nos liste los procesos disponibles. Por ejemplo, queremos ver el estado de las conexiones, pues vemos que en el listado se encuentra "netstat", entonces escribimos en la consola<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat netstat</code></div></div><br />
que nos dará una amplia colección de estadísticas de red, incluyendo la temporización TCP, los cookies enviados y recibidos y mucho más.<br />
<br />
Si alguien quiere profundizar mas en el tema aquí os dejo unos enlaces de donde he sacado la información.<br />
<br />
<a href="http://www.gb.nrao.edu/pubcomputing/redhatELWS4/RH-DOCS/rhel-rg-es-4/s1-proc-topfiles.html" target="_blank" rel="noopener" class="mycode_url">http://www.gb.nrao.edu/pubcomputing/redh...files.html</a><br />
<a href="http://www.linuxtotal.com.mx/index.php?cont=info_admon_016" target="_blank" rel="noopener" class="mycode_url">http://www.linuxtotal.com.mx/index.php?c..._admon_016</a><br />
<a href="http://man7.org/linux/man-pages/man5/proc.5.html" target="_blank" rel="noopener" class="mycode_url">http://man7.org/linux/man-pages/man5/proc.5.html</a>]]></description>
			<content:encoded><![CDATA[Saludos amigos, Android es básicamente linux, y éste tiene una poderosa herramienta, la consola de comandos o terminal, que la tenemos un poco olvidada. Desde aquí intentaré hacer una serie de artículos para aprender a aprovecharnos de esta poderosa herramienta y poder exprimir un poco mas a Android.<br />
<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: #0000CD;" class="mycode_color"><span style="font-size: large;" class="mycode_size">EL DIRECTORIO  /PROC</span></span></div>
<br />
El directorio /proc es un directorio extraño, contiene ficheros y mucha información, pero su archivos ocupan 0 bytes. Son archivos virtuales que nos dan información exacta de lo que está ocurriendo en la máquina en ese mismo instante y sobre la configuración de la misma. Son ficheros de solo lectura, excepto en /proc/sys, que también nos dejará tocar algunas configuraciones del Kernel, cosa peligrosa si no sabemos lo que estamos haciendo, aunque son cambios temporales, una vez reinicies la máquina volverá a sus valores originales. Todo esto sirve para hacer pruebas de configuraciones antes de hacer los cambios en los archivos definitivos.<br />
<br />
Antes de nada comentar que para ejecutar estos comandos tenemos que ser root y por supuesto un terminal (os lo podeis bajar del Google Play o cualquier aplicación para gestionar la Rom, tipo Rom Tool Box, disponen de terminal).<br />
<br />
<br />
Para loguearnos como root, abrimos un terminal,tecleamos<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>su</code></div></div><br />
Nos habrá cambiado el último símbolo de la línea &#36; por #, ya tenemos sesión de superusuario en el terminal.<br />
<br />
<br />
<br />
<br />
Para saber todos los archivos y directorios que tenemos disponibles en /proc<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>ls /proc</code></div></div><br />
Los números corresponden a procesos en ejecución y lo demás son los archivos y directorios disponibles.<br />
<br />
<br />
<br />
<br />
Información del uso de la memoria RAM<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/meminfo</code></div></div><br />
** Toda la información nos la da en Kilobytes.<br />
<br />
MemTotal — Nos informa de la cantidad total de RAM física.<br />
<br />
MemFree — Nos informa de la cantidad de RAM física sin utilizar por el sistema.<br />
<br />
Buffers — Nos informa de la cantidad de RAM física usada para los archivos de memoria intermedia.<br />
<br />
Cached — Nos informa de la cantidad de RAM física usada como memoria caché.<br />
<br />
SwapCached — Nos informa de la cantidad de swap usada como memoria caché.<br />
<br />
Active — Nos informa de la cantidad total de memoria intermedia o caché de página que está en uso activo. Esta es memoria que recientemente ha sido utilizada y que usualmente no se reclama para otros propósitos.<br />
<br />
Inactive — Nos informa de la cantidad total de memoria intermedia o caché de página que está libre y disponible. Esta es memoria que no se ha utilizado recientemente y que se puede reclamar para otros propósitos.<br />
<br />
HighTotal y HighFree — Nos informa de la cantidad total de memoria libre, que no está mapeada en el espacio del kernel. El valor HighTotal puede variar dependiendo del tipo de kernel utilizado.<br />
<br />
LowTotal y LowFree — Nos informa de la cantidad total de memoria libre implantada directamente en el espacio del kernel. El valor LowTotal puede cambiar dependiendo del tipo de kernel utilizado.<br />
<br />
…....<br />
<br />
<br />
<br />
<br />
Información de la CPU<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/cpuinfo</code></div></div><br />
Nos da la información exacta del procesador que tenemos, su tipo, hardware, su versión, etc.<br />
<br />
<br />
<br />
<br />
Información de las particiones.<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/partitions</code></div></div><br />
Nos da información sobre la asignación de bloques de particiones.<br />
<br />
<br />
major — Número principal (major number) del dispositivo con esta partición.<br />
<br />
minor — Número menor del dispositivo con esta partición. Separa las particiones en diferentes dispositivos físicos y los relaciona con el número al final del nombre de la partición.<br />
<br />
#blocks — Lista el número de bloques de disco físicos contenidos en una partición particular.<br />
<br />
Name — Nombre de la partición.<br />
<br />
<br />
<br />
<br />
Montajes en uso<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/mounts</code></div></div><br />
Este archivo proporciona una lista de todos los montajes en uso por el sistema.<br />
La primera columna especifica el dispositivo que está montado, la segunda revela el punto de montaje, la tercera indica el tipo de sistema de archivos y la cuarta si está montado en modo sólo lectura o sólo escritura.<br />
<br />
<br />
<br />
<br />
Para saber los módulos que se han cargado<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/modules</code></div></div><br />
Este archivo muestra una lista de todos los módulos cargados en el sistema.<br />
<br />
La primera columna contiene el nombre del módulo.<br />
<br />
La segunda columna se refiere al tamaño de la memoria del módulo, en bytes.<br />
<br />
La tercera columna lista cuántas instancias del módulo están cargadas actualmente. Un valor de cero representa un módulo sin cargar.<br />
<br />
La cuarta columna indica si el módulo depende de que otro módulo esté presente para poder funcionar, y lista esos otros módulos.<br />
<br />
La quinta columna lista en qué estado de carga se encuentra el módulo: Live, Loading o Unloading son los únicos valores posibles.<br />
<br />
La sexta columna lista el desplazamiento de memoria del kernel actual para el módulo cargado. Esta información puede ser útil para propósitos de depuración o para herramientas de perfiles.<br />
<br />
<br />
<br />
<br />
Para saber versión de Kernel<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/version</code></div></div><br />
Este archivo muestra las versión del kernel de Linux y gcc en uso.<br />
<br />
<br />
<br />
<br />
Para sabe dispositivos de caracteres y de bloque configurados<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/devices</code></div></div><br />
Este archivo muestra los diversos dispositivos de caracteres y de bloque actualmente configurados (no incluye dispositivos cuyos módulos no están cargados).<br />
La salida de datos desde /proc /devices incluye el número mayor y el nombre del dispositivo y se divide en dos secciones: Dispositivos de caracteres y Dispositivos de bloque.<br />
Los dispositivos de caracteres son similares a los dispositivos de bloque, excepto por dos diferencias básicas:<br />
1.  Los dispositivos de caracteres no requieren buffering. Los dispositivos de bloque disponen de una memoria intermedia o buffer que les permite ordenar las peticiones antes de tratar con ellas. Esto es muy importante para los dispositivos diseñados para guardar información — tales como discos duros — porque la habilidad de ordenar la información antes de escribirla en el dispositivo permite que ésta se almacene de forma más eficiente.<br />
2. Los dispositivos de caracteres envían datos sin un tamaño preconfigurado. Los dispositivos de bloque pueden enviar y recibir información en bloques de un tamaño particular, configurable por dispositivo.<br />
<br />
<br />
<br />
<br />
Para saber los tipos del sistema de archivos soportados por el kernel<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/filesystems</code></div></div><br />
La primera columna significa si el sistema de archivos está montado en un dispositivo de bloque. Aquellos que comiencen con nodev no están montados en un dispositivo. La segunda columna lista el nombre de los sistemas de archivos soportados.<br />
El comando mount circula por estos sistemas de archivos listados aquí cuando uno no está especificado como un argumento.<br />
<br />
<br />
<br />
<br />
Para saber los controladores registrados<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/misc</code></div></div><br />
La primera columna es el número menor (minor) de cada dispositivo y la segunda le muestra el controlador en uso.<br />
<br />
<br />
<br />
<br />
Para saber el tiempo que lleva encendido el sistema desde el último reinicio<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat /proc/uptime</code></div></div><br />
El primer número le indica el número total de segundos que el sistema ha estado en funcionamiento. El segundo indica cuánto de ese tiempo, también en segundos, la máquina ha estado inactiva.<br />
<br />
<br />
<br />
<br />
..... Hay muchos mas comandos y directorios de donde sacar información del sistema, yo sólo he puesto los que me parecen mas interesantes. en los directorios /proc/net y /proc/sys (hay muchos mas) se puede sacar información sobre las conexiones de internet e información del kernel, respectivamente. Ojo, esto son directorios, para ver la información disponible habría que teclear<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cd /proc/net<br />
ls</code></div></div><br />
para que nos liste los procesos disponibles. Por ejemplo, queremos ver el estado de las conexiones, pues vemos que en el listado se encuentra "netstat", entonces escribimos en la consola<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>cat netstat</code></div></div><br />
que nos dará una amplia colección de estadísticas de red, incluyendo la temporización TCP, los cookies enviados y recibidos y mucho más.<br />
<br />
Si alguien quiere profundizar mas en el tema aquí os dejo unos enlaces de donde he sacado la información.<br />
<br />
<a href="http://www.gb.nrao.edu/pubcomputing/redhatELWS4/RH-DOCS/rhel-rg-es-4/s1-proc-topfiles.html" target="_blank" rel="noopener" class="mycode_url">http://www.gb.nrao.edu/pubcomputing/redh...files.html</a><br />
<a href="http://www.linuxtotal.com.mx/index.php?cont=info_admon_016" target="_blank" rel="noopener" class="mycode_url">http://www.linuxtotal.com.mx/index.php?c..._admon_016</a><br />
<a href="http://man7.org/linux/man-pages/man5/proc.5.html" target="_blank" rel="noopener" class="mycode_url">http://man7.org/linux/man-pages/man5/proc.5.html</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Ejecutar *.bat en linux.]]></title>
			<link>https://chujalt.com/thread-30.html</link>
			<pubDate>Sun, 14 Mar 2021 18:58:25 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-30.html</guid>
			<description><![CDATA[Saludos amigos....<br />
Para los que usamos linux y nos gusta estar trasteando siempre nos tropezamos con alguna "herramienta" que es un script.bat, por lo que nos toca ir cambiando de sistema operativo para ejecutarlos.<br />
Seguramente muchos lo sepan... pero yo lo pongo por si a alguien le interesa.<br />
<br />
Primero tenemos que instalar wine (programa para ejecutar programas windows).<br />
<br />
En una consola tecleamos<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo add-apt-repository ppa:ubuntu-wine/ppa</code></div></div><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo apt-get update</code></div></div><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo apt-get install wine1.6 winetricks</code></div></div><br />
<br />
Ya tenemos instalado wine.<br />
<br />
Ahora para ejecutar un *bat, lo ponemos en una carpeta.... abrimos un termina en esa carpeta y escribimos en el terminal<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>wineconsole fichero.bat</code></div></div><br />
Se abrirá otro terminal y se ejecutara el fichero.bat<br />
<br />
Bueno.... ya está... espero que a alguien le sirva<br />
<br />
Saludos]]></description>
			<content:encoded><![CDATA[Saludos amigos....<br />
Para los que usamos linux y nos gusta estar trasteando siempre nos tropezamos con alguna "herramienta" que es un script.bat, por lo que nos toca ir cambiando de sistema operativo para ejecutarlos.<br />
Seguramente muchos lo sepan... pero yo lo pongo por si a alguien le interesa.<br />
<br />
Primero tenemos que instalar wine (programa para ejecutar programas windows).<br />
<br />
En una consola tecleamos<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo add-apt-repository ppa:ubuntu-wine/ppa</code></div></div><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo apt-get update</code></div></div><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo apt-get install wine1.6 winetricks</code></div></div><br />
<br />
Ya tenemos instalado wine.<br />
<br />
Ahora para ejecutar un *bat, lo ponemos en una carpeta.... abrimos un termina en esa carpeta y escribimos en el terminal<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>wineconsole fichero.bat</code></div></div><br />
Se abrirá otro terminal y se ejecutara el fichero.bat<br />
<br />
Bueno.... ya está... espero que a alguien le sirva<br />
<br />
Saludos]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Evitar descarga página web con comando Wget.]]></title>
			<link>https://chujalt.com/thread-29.html</link>
			<pubDate>Sun, 14 Mar 2021 18:57:18 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-29.html</guid>
			<description><![CDATA[Los que usamos Linux sabemos la existencia de un comando de consola mediante el cual te puedes bajas una web completa de manera recursiva, esto es, todo su contenido con todos los directorios que contiene y archivos. Este comando es <span style="font-weight: bold;" class="mycode_b">Wget</span>.<br />
<br />
A los que tenemos un sitio web no nos puede hacer gracia que se puedan bajar todo su contenido, imágenes, archivos o puede que tengamos zonas privadas que wget se las saltará y también se las bajará.<br />
<br />
Hay dos maneras de evitarlo, editando el archivo robots.txt, la menos recomendable, o editando el archivo .htaccess.<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">robots.txt</span></span><br />
<br />
Según wikipedia u<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">n archivo </span></span><span style="font-style: italic;" class="mycode_i"><span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">robots.txt</span></span></span><span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font"> en un sitio web funcionará como una petición que especifica que determinados robots no hagan caso a </span></span><a href="http://es.wikipedia.org/wiki/Archivo_(inform%C3%A1tica)" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0b0080;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">archivos</span></span></a><span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font"> o </span></span><a href="http://es.wikipedia.org/wiki/Directorio" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0b0080;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">directorios</span></span></a><span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font"> específicos en su búsqueda. Esto puede realizarse, por ejemplo, para dejar fuera de una preferencia los resultados de una búsqueda avanzada, o de la creencia que el contenido de los directorios seleccionados puede ser engañoso o inaplicable a la clasificación del sitio en su totalidad.</span></span><br />
<br />
<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">Para evitar que wget se descargue el sitio web completo tendremos que añadir esta línea</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>User-agent: wget<br />
Disallow: /</code></div></div><br />
<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">Si nos da los mismo que se bajen la web, pero hay directorios que no queremos que se bajen se puede indicar también</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>User-agent: wget<br />
Disallow: /zona_privada/</code></div></div><br />
<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">Pero este método tiene una <span style="font-weight: bold;" class="mycode_b">contra</span>, si se es un usuario normal posiblemente funcionará, pero si el que se quiere bajar la web ya es un poco mas conocedor de como funciona wget, sabrá que se puede saltar esta restricción con este línea</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>wget -e robots=off --wait 1 http://tu_sitio.com</code></div></div><br />
<br />
<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">Con esto no hará caso al archivo robots.txt.</span></span><br />
<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">.htaccess</span><br />
<br />
 Para evitar la descarga indeseada de nuestro sitio web de forma mas segura editaremos el archivo .htaccess añadiéndole las siguientes líneas<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>RewriteEngine On<br />
Options +FollowSymLinks<br />
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]<br />
RewriteRule ^(.*)&#36; - [F]</code></div></div><br />
Con esto no solo evitaremos el uso de wget sino también el uso de otros comandos, como curl.<br />
La última linea llevará al que quiere bajar el sitio web a un mensaje de denegado el acceso.<br />
<br />
Si lo que queremos es ponerlo uno a uno y todo el listado de los bad bosts mas conocidos, sería así<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>RewriteEngine on<br />
RewriteBase /<br />
RewriteCond %{HTTP_USER_AGENT} ^wget [OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^Otro_bad_bot [OR]<br />
...<br />
...<br />
RewriteRule ^.* - [F,L]</code></div></div><br />
Los "..." significa que vamos metiendo las lineas que queramos.<br />
<br />
Una lista de los bad bots mas conocidos <a href="http://perishablepress.com/ultimate-htaccess-blacklist/" target="_blank" rel="noopener" class="mycode_url">AQUI</a>]]></description>
			<content:encoded><![CDATA[Los que usamos Linux sabemos la existencia de un comando de consola mediante el cual te puedes bajas una web completa de manera recursiva, esto es, todo su contenido con todos los directorios que contiene y archivos. Este comando es <span style="font-weight: bold;" class="mycode_b">Wget</span>.<br />
<br />
A los que tenemos un sitio web no nos puede hacer gracia que se puedan bajar todo su contenido, imágenes, archivos o puede que tengamos zonas privadas que wget se las saltará y también se las bajará.<br />
<br />
Hay dos maneras de evitarlo, editando el archivo robots.txt, la menos recomendable, o editando el archivo .htaccess.<br />
<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">robots.txt</span></span><br />
<br />
Según wikipedia u<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">n archivo </span></span><span style="font-style: italic;" class="mycode_i"><span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">robots.txt</span></span></span><span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font"> en un sitio web funcionará como una petición que especifica que determinados robots no hagan caso a </span></span><a href="http://es.wikipedia.org/wiki/Archivo_(inform%C3%A1tica)" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0b0080;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">archivos</span></span></a><span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font"> o </span></span><a href="http://es.wikipedia.org/wiki/Directorio" target="_blank" rel="noopener" class="mycode_url"><span style="color: #0b0080;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">directorios</span></span></a><span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font"> específicos en su búsqueda. Esto puede realizarse, por ejemplo, para dejar fuera de una preferencia los resultados de una búsqueda avanzada, o de la creencia que el contenido de los directorios seleccionados puede ser engañoso o inaplicable a la clasificación del sitio en su totalidad.</span></span><br />
<br />
<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">Para evitar que wget se descargue el sitio web completo tendremos que añadir esta línea</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>User-agent: wget<br />
Disallow: /</code></div></div><br />
<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">Si nos da los mismo que se bajen la web, pero hay directorios que no queremos que se bajen se puede indicar también</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>User-agent: wget<br />
Disallow: /zona_privada/</code></div></div><br />
<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">Pero este método tiene una <span style="font-weight: bold;" class="mycode_b">contra</span>, si se es un usuario normal posiblemente funcionará, pero si el que se quiere bajar la web ya es un poco mas conocedor de como funciona wget, sabrá que se puede saltar esta restricción con este línea</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>wget -e robots=off --wait 1 http://tu_sitio.com</code></div></div><br />
<br />
<span style="color: #252525;" class="mycode_color"><span style="font-family: sans-serif;" class="mycode_font">Con esto no hará caso al archivo robots.txt.</span></span><br />
<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size">.htaccess</span><br />
<br />
 Para evitar la descarga indeseada de nuestro sitio web de forma mas segura editaremos el archivo .htaccess añadiéndole las siguientes líneas<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>RewriteEngine On<br />
Options +FollowSymLinks<br />
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]<br />
RewriteRule ^(.*)&#36; - [F]</code></div></div><br />
Con esto no solo evitaremos el uso de wget sino también el uso de otros comandos, como curl.<br />
La última linea llevará al que quiere bajar el sitio web a un mensaje de denegado el acceso.<br />
<br />
Si lo que queremos es ponerlo uno a uno y todo el listado de los bad bosts mas conocidos, sería así<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>RewriteEngine on<br />
RewriteBase /<br />
RewriteCond %{HTTP_USER_AGENT} ^wget [OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^Otro_bad_bot [OR]<br />
...<br />
...<br />
RewriteRule ^.* - [F,L]</code></div></div><br />
Los "..." significa que vamos metiendo las lineas que queramos.<br />
<br />
Una lista de los bad bots mas conocidos <a href="http://perishablepress.com/ultimate-htaccess-blacklist/" target="_blank" rel="noopener" class="mycode_url">AQUI</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Instalar Ubuntu 16.4 junto a Windows 10 con particiones GTP y con UEFI.]]></title>
			<link>https://chujalt.com/thread-28.html</link>
			<pubDate>Sun, 14 Mar 2021 18:55:28 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-28.html</guid>
			<description><![CDATA[<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Saludos amigos...</span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"> </span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Después de muchos apuros, leer bastante y meter muchas veces la pata, voy a explicar en esta guía como conseguí instalar Ubuntu 16.4 junto a Windows 10 en un pc UEFI con particiones tipo GTP.</span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"> </span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">En primer lugar debemos descargarnos la ISO de Ubuntu 16.4.1 LTS de la página oficial.</span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"> </span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Para preparar el USB de instalación, desde Windows Instalamos el programa Rufus en su última versión.</span></span><br />
<br />
<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"><img src="http://chujalt.com/1/imagenes/rufus_es.png" loading="lazy"  alt="[Imagen: rufus_es.png]" class="mycode_img img-responsive" /></span></span></div>
<br />
<br />
<br />
<br />
<div style="text-align: left;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Una cosa muy importante es la opción Tipo de la partición y del sistema de destino, que debe estar en Tipo de partición GTP para computadora UEFI (intenté ponerle una ISO Debian, pero al poner esta opción me decía que no es posible). El sistema de archivos FAT32 y todo lo demás lo dejamos lo que nos pone por defecto. Buscamos la ISO a instalar y le damos al botón de comenzar.<br />
</span></span><br />
 <br />
Una vez terminada la instalación, vamos a nuestro PC, pinchamos nuestro USB, lo encendemos y entramos en la BIOS, debemos desactivar la opción de SECURE BOOT y en la orden de arranque poner en primer lugar nuestro USB de instalación.<br />
<br />
 <br />
Durante la instalación, cuando te pregunta donde instalarlo, yo le puse personalizada, creando tres particiones /, /home y swap. En el sitio donde instalar el gestor de arranque seleccioné la raiz del disco duro.<br />
<br />
 <br />
Termina la instalación y cuando reiniciamos vemos que no sale el Grub y que se inicia Windows directamente. No pasa nada.<br />
<br />
 <br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Volvemos a poner nuestro USB y reiniciamos el PC, pero esta vez en modo live. Una vez abierto necesitamos instalar el programa boot-repair disk, para ello, en una ventana de terminal introducimos</span></span></div>
<br />
<div style="text-align: left;" class="mycode_align">
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo add-apt-repository ppa:yannubuntu/boot-repair<br />
sudo apt-get update<br />
sudo apt-get install -y boot-repair</code></div></div></div>
<br />
<br />
<div style="text-align: left;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Con esto se nos instalará y se nos abrirá</span></span></div>
<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"><img src="http://chujalt.com/1/imagenes/boot_repair.png" loading="lazy"  alt="[Imagen: boot_repair.png]" class="mycode_img img-responsive" /></span></span></div>
<br />
<br />
<br />
<br />
<div style="text-align: left;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Debemos ir a las opciones avanzadas y abrir la pestaña "opciones de GRUB". Una vez ahí, lo que debemos hacer es desactivar la opción "SecureBoot" y asegurarnos que la opción "purgar GRUB antes de reinstalarlo" está activada. Le damos a aceptar y se pondrá a trabajar.<br />
</span></span><br />
 <br />
Cuando haya terminado nos pedirá que en una ventana de terminal pongamos unas ordenes bash que el mismo nos proporciona. Hay que ponerlas una a una. Después nos saldrá una ventana donde nos informará de lo que ha hecho y nos dará una linea para introducir en un terminal Windows si sigue sin salir el GRUB.<br />
<br />
 <br />
Reinicié y seguía arrancando Windows directamente. Se ejecuta un terminal de Windows, pero ojo, como administrador y se pone esa línea antes proporcionada por Boot-repair. Reinicié y ya sale el GRUB con los dos sistemas instalados, a parte de otras opciones.<br />
<br />
 <br />
Esto es lo que he hecho yo tras mucho pelear y es lo que me ha funcionado, espero que a alguien le sirva.<br />
<br />
  <br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Saludos.</span></span></div>]]></description>
			<content:encoded><![CDATA[<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Saludos amigos...</span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"> </span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Después de muchos apuros, leer bastante y meter muchas veces la pata, voy a explicar en esta guía como conseguí instalar Ubuntu 16.4 junto a Windows 10 en un pc UEFI con particiones tipo GTP.</span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"> </span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">En primer lugar debemos descargarnos la ISO de Ubuntu 16.4.1 LTS de la página oficial.</span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"> </span></span><br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Para preparar el USB de instalación, desde Windows Instalamos el programa Rufus en su última versión.</span></span><br />
<br />
<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"><img src="http://chujalt.com/1/imagenes/rufus_es.png" loading="lazy"  alt="[Imagen: rufus_es.png]" class="mycode_img img-responsive" /></span></span></div>
<br />
<br />
<br />
<br />
<div style="text-align: left;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Una cosa muy importante es la opción Tipo de la partición y del sistema de destino, que debe estar en Tipo de partición GTP para computadora UEFI (intenté ponerle una ISO Debian, pero al poner esta opción me decía que no es posible). El sistema de archivos FAT32 y todo lo demás lo dejamos lo que nos pone por defecto. Buscamos la ISO a instalar y le damos al botón de comenzar.<br />
</span></span><br />
 <br />
Una vez terminada la instalación, vamos a nuestro PC, pinchamos nuestro USB, lo encendemos y entramos en la BIOS, debemos desactivar la opción de SECURE BOOT y en la orden de arranque poner en primer lugar nuestro USB de instalación.<br />
<br />
 <br />
Durante la instalación, cuando te pregunta donde instalarlo, yo le puse personalizada, creando tres particiones /, /home y swap. En el sitio donde instalar el gestor de arranque seleccioné la raiz del disco duro.<br />
<br />
 <br />
Termina la instalación y cuando reiniciamos vemos que no sale el Grub y que se inicia Windows directamente. No pasa nada.<br />
<br />
 <br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Volvemos a poner nuestro USB y reiniciamos el PC, pero esta vez en modo live. Una vez abierto necesitamos instalar el programa boot-repair disk, para ello, en una ventana de terminal introducimos</span></span></div>
<br />
<div style="text-align: left;" class="mycode_align">
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>sudo add-apt-repository ppa:yannubuntu/boot-repair<br />
sudo apt-get update<br />
sudo apt-get install -y boot-repair</code></div></div></div>
<br />
<br />
<div style="text-align: left;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Con esto se nos instalará y se nos abrirá</span></span></div>
<br />
<br />
<div style="text-align: center;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font"><img src="http://chujalt.com/1/imagenes/boot_repair.png" loading="lazy"  alt="[Imagen: boot_repair.png]" class="mycode_img img-responsive" /></span></span></div>
<br />
<br />
<br />
<br />
<div style="text-align: left;" class="mycode_align"><span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Debemos ir a las opciones avanzadas y abrir la pestaña "opciones de GRUB". Una vez ahí, lo que debemos hacer es desactivar la opción "SecureBoot" y asegurarnos que la opción "purgar GRUB antes de reinstalarlo" está activada. Le damos a aceptar y se pondrá a trabajar.<br />
</span></span><br />
 <br />
Cuando haya terminado nos pedirá que en una ventana de terminal pongamos unas ordenes bash que el mismo nos proporciona. Hay que ponerlas una a una. Después nos saldrá una ventana donde nos informará de lo que ha hecho y nos dará una linea para introducir en un terminal Windows si sigue sin salir el GRUB.<br />
<br />
 <br />
Reinicié y seguía arrancando Windows directamente. Se ejecuta un terminal de Windows, pero ojo, como administrador y se pone esa línea antes proporcionada por Boot-repair. Reinicié y ya sale el GRUB con los dos sistemas instalados, a parte de otras opciones.<br />
<br />
 <br />
Esto es lo que he hecho yo tras mucho pelear y es lo que me ha funcionado, espero que a alguien le sirva.<br />
<br />
  <br />
<span style="color: #282828;" class="mycode_color"><span style="font-family: helvetica, arial, sans-serif;" class="mycode_font">Saludos.</span></span></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Recuperar GRUB después de actualización de Windows 10.]]></title>
			<link>https://chujalt.com/thread-27.html</link>
			<pubDate>Sun, 14 Mar 2021 18:53:31 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://chujalt.com/member.php?action=profile&uid=1">chujalt</a>]]></dc:creator>
			<guid isPermaLink="false">https://chujalt.com/thread-27.html</guid>
			<description><![CDATA[Saludos.<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">OJO</span></span>, este método funciona a los que tienen la <span style="font-weight: bold;" class="mycode_b">bios EFI</span>, en las bios antiguas no funcionará.<br />
<br />
De vez en cuando Windows 10 hace una actualización importante y los que también tenemos instalados Linux nos llevamos la mala sorpresa que al reiniciar el ordenador arranca Windows directamente, el GRUB a desaparecido.<br />
<br />
Tranquilos, hay una rápida y fácil solución.<br />
<br />
Una vez Windows abierto ejecutamos como administrador su consola de comandos y escribimos la siguiente línea:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>bcdedit /set {bootmgr} path &#92;EFI&#92;ubuntu&#92;grubx64.efi</code></div></div><br />
Reiniciamos y nos volverá a salir el GRUB.<br />
<br />
Saludos.]]></description>
			<content:encoded><![CDATA[Saludos.<br />
<br />
<span style="color: #ff3333;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">OJO</span></span>, este método funciona a los que tienen la <span style="font-weight: bold;" class="mycode_b">bios EFI</span>, en las bios antiguas no funcionará.<br />
<br />
De vez en cuando Windows 10 hace una actualización importante y los que también tenemos instalados Linux nos llevamos la mala sorpresa que al reiniciar el ordenador arranca Windows directamente, el GRUB a desaparecido.<br />
<br />
Tranquilos, hay una rápida y fácil solución.<br />
<br />
Una vez Windows abierto ejecutamos como administrador su consola de comandos y escribimos la siguiente línea:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>bcdedit /set {bootmgr} path &#92;EFI&#92;ubuntu&#92;grubx64.efi</code></div></div><br />
Reiniciamos y nos volverá a salir el GRUB.<br />
<br />
Saludos.]]></content:encoded>
		</item>
	</channel>
</rss>