<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Curl on Karpoke - Just Another Blog</title><link>http://karpoke.ignaciocano.com/tags/curl/</link><description>Recent content in Curl on Karpoke - Just Another Blog</description><generator>Hugo -- 0.159.0</generator><language>es</language><lastBuildDate>Sat, 06 Sep 2014 17:45:00 +0100</lastBuildDate><atom:link href="http://karpoke.ignaciocano.com/tags/curl/index.xml" rel="self" type="application/rss+xml"/><item><title>Compartiendo archivos en la nube desde el terminal</title><link>http://karpoke.ignaciocano.com/2014/09/06/compartiendo-archivos-en-la-nube-desde-el-terminal/</link><pubDate>Sat, 06 Sep 2014 17:45:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/09/06/compartiendo-archivos-en-la-nube-desde-el-terminal/</guid><description>&lt;p&gt;Hay muchas maneras de compartir archivos, pero con &lt;a href="http://curl.io/"&gt;curl.io&lt;/a&gt; podemos
hacerlo directamente desde el terminal usando &lt;code&gt;curl&lt;/code&gt;, permitiéndonos
archivos hasta 5 GB y durante 4 horas, tiempo tras el cual será
eliminados.&lt;/p&gt;
&lt;p&gt;Por ejemplo, para compartir el archivo &lt;code&gt;/tmp/test&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl -F &amp;#34;file=@/tmp/test&amp;#34; http://curl.io/send/nzdqxcmf
File successfully received.
You can download test from this url:
http://curl.io/get/nzdqxcmf/90571b24cf847434a171d41cb2043d6a561cb85b
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para recuperarlo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl -o test http://curl.io/get/nzdqxcmf/90571b24cf847434a171d41cb2043d6a561cb85b
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Tal como nos sugieren en su web, también podemos enviarlo cifrado con
&lt;code&gt;gpg&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Conseguir la lista actualizada de medios AEDE para bloquearlos</title><link>http://karpoke.ignaciocano.com/2014/07/27/conseguir-la-lista-actualizada-de-medios-aede-para-bloquearlos/</link><pubDate>Sun, 27 Jul 2014 11:28:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/07/27/conseguir-la-lista-actualizada-de-medios-aede-para-bloquearlos/</guid><description>&lt;p&gt;La lista de medios asociados a AEDE se puede consultar en su página:
&lt;a href="https://www.aede.es/publica/Periodicos_Asociados.asp"&gt;www.aede.es/publica/Periodicos_Asociados.asp&lt;/a&gt;. Si no queremos visitar ni
por error las páginas de dichos medios, tenemos diferentes alternativas,
desde &lt;em&gt;scripts&lt;/em&gt; de GreaseMonkey para &lt;a href="https://github.com/pykiss/anti-AEDE/blob/master/script.user.js"&gt;Firefox&lt;/a&gt; y complementos para
&lt;a href="https://chrome.google.com/webstore/detail/aede-blocker/olfbaiingdbeoihdemklgmakblhcgpmn?hl=es"&gt;Chrome&lt;/a&gt;, hasta &lt;a href="http://anotacionsalmarge.wordpress.com/2014/02/17/bloquejar-pagines-web/"&gt;añadir los dominios en el fichero &lt;code&gt;/etc/hosts&lt;/code&gt;&lt;/a&gt;,
tal como haríamos si fuesen &lt;a href="http://karpoke.ignaciocano.com/2012/06/21/hphosts-evitando-la-navegacion-por-dominios-maliciosos/"&gt;dominios maliciosos&lt;/a&gt;, o incluso
complementos para &lt;a href="https://wordpress.org/plugins/canon-aede/"&gt;WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Los siguientes comandos nos facilitan descargar la lista de dominios:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ lynx -dump http://www.aede.es/publica/Periodicos_Asociados.asp |
\grep -Eo &amp;#34;http://[^/\&amp;#34;]+&amp;#34; |
\grep -v aede.es |
sort |
uniq |
awk &amp;#34;{gsub(/http:\/\//, \&amp;#34;\&amp;#34;); print; gsub(/www\./, \&amp;#34;\&amp;#34;); print; }&amp;#34; |
sed &amp;#39;s/^/127.0.0.1 /&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Una alternativa a &lt;code&gt;lynx&lt;/code&gt; sería utilizar el comando &lt;code&gt;curl&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Consultar el buscón de la RAE desde el terminal</title><link>http://karpoke.ignaciocano.com/2012/02/28/consultar-el-buscon-de-la-rae-desde-el-terminal/</link><pubDate>Tue, 28 Feb 2012 01:41:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/02/28/consultar-el-buscon-de-la-rae-desde-el-terminal/</guid><description>&lt;p&gt;Al realizar consultas al &lt;a href="http://buscon.rae.es/draeI/"&gt;buscón de la RAE&lt;/a&gt; desde el terminal, me iba
muy lento. Ésta es una página que todavía usa marcos (wtf!), por lo que
si queremos acceder directamente a la página con el resultado de la
búsqueda deberemos utilizar una de las siguientes URLs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;~~Para el &lt;a href="http://buscon.rae.es/draeI/"&gt;diccionario de la RAE&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;`http://buscon.rae.es/draeI/SrvltGUIBusUsual?origen=RAE&amp;amp;TIPO_BUS=3&amp;amp;LEMA=cederrón`~~
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;~~Para el &lt;a href="http://buscon.rae.es/dpdI/"&gt;diccionario panhispánico de dudas&lt;/a&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;`http://buscon.rae.es/dpdI/SrvltGUIBusDPD?origen=RAE&amp;amp;lema=cederrón`~~
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h4 id="actualización"&gt;Actualización&lt;/h4&gt;
&lt;p&gt;La RAE ha cambiado la URL de búsqueda, pasando a ser:&lt;/p&gt;</description></item><item><title>Obteniendo la IP pública, la IP privada y la dirección MAC en Bash</title><link>http://karpoke.ignaciocano.com/2011/08/14/obteniendo-la-ip-publica-la-ip-privada-y-la-direccion-mac-en-bash/</link><pubDate>Sun, 14 Aug 2011 19:26:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/14/obteniendo-la-ip-publica-la-ip-privada-y-la-direccion-mac-en-bash/</guid><description>&lt;p&gt;En los &lt;em&gt;scripts&lt;/em&gt; que escribimos, a menudo, es necesario conocer la IP pública
de nuestra red, o la IP privada y la dirección MAC de una interfaz de red. Con
el comando &lt;code&gt;ifconfig&lt;/code&gt; podemos conocer la información de las interfaces de red:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ ifconfig
eth0 Link encap:Ethernet direcciónHW 00:11:22:33:44:55
Direc. inet:192.168.0.30 Difus.:192.168.0.255 Másc:255.255.255.0
Dirección inet6: fe80::203:dff:fe3c:f419/64 Alcance:Enlace
ACTIVO DIFUSI–N FUNCIONANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX:1627 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:1067 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:560137 (560.1 KB) TX bytes:235094 (235.0 KB)
Interrupción:19 Dirección base: 0xc800
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;eth1 Link encap:Ethernet direcciónHW 00:11:22:33:44:66
DIFUSI–N MULTICAST MTU:1500 Métrica:1
Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0 colisiones:0 long.colaTX:1000
Bytes RX:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupción:21 Dirección base: 0x8000 Memoria:ffcfe000-ffcfefff
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;lo Link encap:Bucle local
Direc. inet:127.0.0.1 Másc:255.0.0.0
Dirección inet6: ::1/128 Alcance:Anfitrión
ACTIVO BUCLE FUNCIONANDO MTU:16436 Métrica:1
Paquetes RX:3299 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:3299 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:0
Bytes RX:355696 (355.6 KB) TX bytes:355696 (355.6 KB)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sin embargo, si queremos utilizar el dato en concreto—la IP privada o la
dirección MAC—, necesitaremos trabajar un poco la salida que muestra
&lt;code&gt;ifconfig&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Comprobar a dónde nos lleva un enlace corto</title><link>http://karpoke.ignaciocano.com/2011/05/07/comprobar-a-donde-nos-lleva-un-enlace-corto/</link><pubDate>Sat, 07 May 2011 12:54:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/07/comprobar-a-donde-nos-lleva-un-enlace-corto/</guid><description>&lt;p&gt;Un enlace corto es útil, por ejemplo, para incluir la dirección de una
página web en servicios como &lt;a href="http://karpoke.ignaciocano.com/posts/hack/robando-la-identidad-del-vecino/"&gt;Twitter&lt;/a&gt;, donde el número de caracteres
está limitado. Sin embargo, se pueden utilizar para engañarnos y
llevarnos a una página que no queramos, o incluso que &lt;a href="http://www.worsttech.com/hack/hacker-attack/malware-spreading-via-shortened-urls-1102581.html"&gt;distribuya
&lt;em&gt;malware&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para comprobar hacia dónde apunta un enlaces cortos podemos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utilizar un servicio como &lt;a href="http://urlxray.com/"&gt;urlxray&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;utilizar el comando &lt;code&gt;curl&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl -sI http://goo.gl/GPb7Z | grep Location
Location: http://terminus.homelinux.com/k/
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;utilizar un complemento para &lt;a href="http://addons.mozilla.org/en-US/firefox/search/?q=short+url+expand"&gt;Firefox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Creando y leyendo códigos QR desde Python</title><link>http://karpoke.ignaciocano.com/2011/03/27/creando-y-leyendo-codigos-qr-desde-python/</link><pubDate>Sun, 27 Mar 2011 19:46:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/27/creando-y-leyendo-codigos-qr-desde-python/</guid><description>&lt;p&gt;Un código QR (Quick Response Barcode) permite almacenar información en
un código de barras de dos dimensiones.&lt;/p&gt;
&lt;p&gt;&lt;img alt="cc.qr.code.capacity`" loading="lazy" src="http://karpoke.ignaciocano.com/images/cc.qr_.code_.capacity-300x166.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Hay bastantes servicios en la web que nos permiten crear nuestros
propios códigos, por ejemplo &lt;a href="http://code.google.com/apis/chart/infographics/docs/qr_codes.html"&gt;el de Google&lt;/a&gt;, que podemos emplear desde
la línea de comandos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl http://chart.apis.google.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chld=H|0&amp;amp;chl=texto -o qr.png
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img alt="QR Code Python" loading="lazy" src="http://karpoke.ignaciocano.com/images/qrcode-python.png"&gt;&lt;/p&gt;
&lt;p&gt;Un pequeño alias para tenerlo siempre a mano:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ alias qrurl=&amp;#39;qrurl() { curl http://chart.apis.google.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chld=H|0&amp;amp;chl=${@// /%20} -o qr.$(date +%Y%m%d%H%M%S).png; }; qrurl&amp;#39;
$ qrurl una ranita iba caminando
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Esto creará un fichero con un nombre parecido a &lt;code&gt;qr.20110325161706.png&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Cabeceras HTTP personalizadas en Apache2</title><link>http://karpoke.ignaciocano.com/2011/02/28/cabeceras-http-personalizadas-en-apache2/</link><pubDate>Mon, 28 Feb 2011 20:28:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/02/28/cabeceras-http-personalizadas-en-apache2/</guid><description>&lt;p&gt;Podemos modificar las cabeceras que devuelve el Apache usando el módulo
&lt;code&gt;mod_headers&lt;/code&gt;. Por ejemplo, añadiendo a nuestro &lt;em&gt;virtualhost&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Header set X-MyHeader &amp;#34;It took %D microseconds to serve this page.&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Se pueden modificar tanto las cabeceras que van a ser enviadas, con la
directiva &lt;code&gt;Header&lt;/code&gt;, como las que vienen con una petición, con la
directiva &lt;code&gt;RequestHeader&lt;/code&gt;. Las acciones que se pueden llevar a cabo son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;set&lt;/code&gt;, especifica el valor de la cabecera, la crea si no existía o&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;la modifica en caso contrario
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;append&lt;/code&gt;, añade el valor al final de la cabecera existente, y separa&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;los valores por comas
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;add&lt;/code&gt;, añade una cabecera, duplicando la cabecera si ésta ya existía&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unset&lt;/code&gt;, elimina una cabecera&lt;/li&gt;
&lt;li&gt;&lt;code&gt;echo&lt;/code&gt;, sólo en el caso de la directiva &lt;code&gt;Header&lt;/code&gt;, y permite utilizar&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;el valor de una cabecera en el `request`
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Este es el resultado:&lt;/p&gt;</description></item><item><title>Mostrando las cabeceras HTTP</title><link>http://karpoke.ignaciocano.com/2010/10/07/mostrando-las-cabeceras-http/</link><pubDate>Thu, 07 Oct 2010 10:35:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/10/07/mostrando-las-cabeceras-http/</guid><description>&lt;p&gt;Leyendo el artículo de &lt;a href="http://www.securitybydefault.com/2010/08/analizando-cabeceras-http-just-for-fun.html"&gt;análisis de cabeceras&lt;/a&gt; de SbD y, en
particular, lo relacionado con las cabeceras no estándar, es decir, las
que comienzan por &lt;code&gt;X-&lt;/code&gt;, se me ha ocurrido que estaría bien ver qué debe
haber por el mundo:&lt;/p&gt;
&lt;p&gt;&lt;img alt="HTTP Header" loading="lazy" src="http://karpoke.ignaciocano.com/images/http_header.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Suponiendo que el archivo &lt;a href="http://terminus.ignaciocano.com/wp-uploads/linked/sites.txt"&gt;sites.txt&lt;/a&gt; contiene un listado de los
sitios que queremos comprobar:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ for url in $(cat sites.txt); do
&amp;gt; echo $url
&amp;gt; curl -sI $url | grep &amp;#34;^X-&amp;#34;
&amp;gt; done &amp;gt; headers.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Es cierto que se podría haber realizado de otras formas:&lt;/p&gt;</description></item></channel></rss>