<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>artegrafico.net</title>
	
	<link>http://www.artegrafico.net/blog</link>
	<description>artegrafico.net</description>
	<lastBuildDate>Thu, 12 Aug 2010 08:54:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/artegraficonet" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="artegraficonet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Problemas con Ajax en Google Chrome.</title>
		<link>http://www.artegrafico.net/blog/problemas-con-ajax-en-google-chrome.html</link>
		<comments>http://www.artegrafico.net/blog/problemas-con-ajax-en-google-chrome.html#comments</comments>
		<pubDate>Thu, 12 Aug 2010 08:36:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=658</guid>
		<description />
			<content:encoded><![CDATA[<p><a href="http://www.artegrafico.net/blog/wp-content/uploads/2010/08/ChromeOriginal.png" rel="lightbox[658]"><img class="size-full wp-image-660 alignright" style="margin-left: 10px; margin-right: 10px;" title="ChromeOriginal" src="http://www.artegrafico.net/blog/wp-content/uploads/2010/08/ChromeOriginal.png" alt="" width="193" height="186" /></a>Puede darse el caso que al ejecutar alguna actualización del navegador, o usando algún programa de limpieza del registro de nuestro ordenador deje de funcionar el AJAX en nuestro navegador Google Chrome. Esto significará que no podremos usar Gmail, etc &#8230; Para solucionarlo bastaría con seguir estos sencillos pasos:</p>
<ol>
<li>Salimos del Chrome y localizamos la carpeta local del programa.</li>
<li>C:\Documents and Settings\{usuario}\Configuración local\Datos de programa\Google\Chrome\User Data\Default</li>
<li>Borramos la carpeta llamada &#8220;Cache&#8221;  e iniciamos el programa.</li>
<li>Solucionado.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/problemas-con-ajax-en-google-chrome.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estilando checkbox de formularios usando jQuery+CSS</title>
		<link>http://www.artegrafico.net/blog/estilando-checkbox-de-formularios-usando-jquery-css.html</link>
		<comments>http://www.artegrafico.net/blog/estilando-checkbox-de-formularios-usando-jquery-css.html#comments</comments>
		<pubDate>Fri, 07 May 2010 23:28:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=634</guid>
		<description><![CDATA[Estilar nuestros checkbox en formularios se puede hacer facil usando jQuery. Partiendo de una lista de opciones en formato HTML, un SPRITE para el rollover del estado del checkbox y un poquito de código en jQuery y ya podremos tener unos checkbox de lo mas originales para todos los formularios que desemos utilizar. Con un [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Estilar nuestros checkbox</strong> en formularios se puede hacer facil usando <strong>jQuery</strong>. Partiendo de una lista de opciones en formato <strong>HTML</strong>, un <strong>SPRITE</strong> para el rollover del estado del checkbox y un poquito de código en <strong>jQuery</strong> y ya podremos tener unos checkbox de lo mas originales para todos los formularios que desemos utilizar. Con un poquito de imaginación y retocando el sprite y la hoja de estilos podremos darle otra apariencia mas acorde a lo que estemos buscando.</p>
<p><img class="size-medium wp-image-639 alignleft" style="margin-left: 25px; margin-right: 25px;" title="captura" src="http://www.artegrafico.net/blog/wp-content/uploads/2010/05/captura-211x300.gif" alt="" width="211" height="300" />El ejemplo en cuestión tiene dispnibles 3 set disponibles para elegir. Adjunto el <strong>PSD</strong> con el <strong>SPRITE</strong> que ha creado el autor para el intercambio de imagen cuando hacemos click en el checkbox. Podéis retocarlo a vuestro gusto o también es posible crear uno de cero tirando de imaginación.</p>
<p>Los métodos y eventos de  <strong>JQuery</strong> que se han usado para crear este ejemplo son los siguientes:</p>
<ul>
<li><strong>click(): </strong> evento usado para cuando hacemos click con el ratón.</li>
<li><strong>parent():</strong> Consigue el padre del elemento que seleccionemos.</li>
<li><strong>addClass() </strong>y<strong> removeClass()</strong>: método muy útil en este ejemplo para asignar o remover clases.</li>
<li><strong>attr() </strong>y<strong> removeAttr(): </strong>método para conseguir o remover atributos.</li>
<li><strong>preventDefault(): </strong>alterar comportamientos.</li>
<li><strong>find(): </strong> método que nos permitirá encontrar algo en concreto.</li>
<li><strong>fadeIn()</strong> y<strong> fadeOut()</strong>: son métodos para ocultar o mostrar elementos usando transparencias.</li>
</ul>
<ul>
<li><a href="http://www.artegrafico.net/laboratorio/ajax/jquery.checklist/" target="_blank">Ver ejemplo demostración.</a></li>
<li><a href="http://www.artegrafico.net/laboratorio/ajax/jquery.checklist/zip/jquery.checklist.zip" target="_blank">Descarga el script +ficheros+PSD con SET de estilos.</a></li>
</ul>
<p>Fuentes:</p>
<p><a href="http://aaronweyenberg.com/90/pretty-checkboxes-with-jquery" target="_blank">http://aaronweyenberg.com/90/pretty-checkboxes-with-jquery</a><br />
<a href="http://combinedartsmedia.com/sean/check-boxes_and_radio-buttons/" target="_blank">http://combinedartsmedia.com/sean/check-boxes_and_radio-buttons/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/estilando-checkbox-de-formularios-usando-jquery-css.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>refresh &amp; reload + setInterval con ajax y jQuery</title>
		<link>http://www.artegrafico.net/blog/refresh-reload-setinterval-con-ajax-y-jquery.html</link>
		<comments>http://www.artegrafico.net/blog/refresh-reload-setinterval-con-ajax-y-jquery.html#comments</comments>
		<pubDate>Sat, 24 Apr 2010 23:30:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[ajax update]]></category>
		<category><![CDATA[fadein]]></category>
		<category><![CDATA[fadeout]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[setInterval]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=614</guid>
		<description><![CDATA[Frecuentemente a la hora de programar necesitamos refrescar y cargar contenido en una capa y que  ejecute un fichero cada x segundos. Esta práctica es muy útil en chats, blogs, e-commerce, cms, etc &#8230;  El siguiente ejemplo actualiza el contenido de una capa cada 10 segundos y carga en ella el contenido del fichero que [...]]]></description>
			<content:encoded><![CDATA[<p>Frecuentemente a la hora de programar necesitamos refrescar y cargar contenido en una capa y que  ejecute un fichero cada x segundos. Esta práctica es muy útil en chats, blogs, e-commerce, cms, etc &#8230;  El siguiente ejemplo actualiza el contenido de una capa cada 10 segundos y carga en ella el contenido del fichero que le indiquemos. El efecto de fundido usando <strong>fadeOut </strong>y <strong>fadeIn </strong>es para darle más dinamismo al script.</p>
<pre class="brush:javascript">&lt;script&gt;
function actualizar(){
   $('#capa').fadeOut("slow").load('fichero.php').fadeIn("slow");
}
setInterval( "actualizar()", 10000 );
&lt;/script&gt;

&lt;div id="capa"&gt;&lt;/div&gt;</pre>
<p><a href="http://www.artegrafico.net/laboratorio/ajax/jquery.refresh/refresh.php">click aquí</a> para ver una pequeña demostración.</p>
<p>Tenéis más documentación de los métodos y funciones usados en el ejemplo a continuación. Haz click en los enlaces para obtener más información:</p>
<ul>
<li><a href="http://api.jquery.com/load/">.load()</a> es el método de <strong>JQuery </strong>usado para cargar los datos desde servidor y la cual nos retornará los resultados en formato <strong>HTML</strong>.</li>
<li><a href="http://api.jquery.com/fadeOut/">fadeOut()</a> es un método de <strong>jQuery </strong>para ocultar elementos usando transparencias.</li>
<li><a href="http://api.jquery.com/fadeIn/">fadeIn()</a> es un método de <strong>jQuery </strong>para mostrar elementos usando transparencias.</li>
<li><strong>setInterval </strong>es una función <strong>JavaScript </strong>que nos permitirá ejecutar una función cada X segundos que le indiquemos.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/refresh-reload-setinterval-con-ajax-y-jquery.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eliminando registros duplicados de una tabla SQL usando DISTINCT ó GROUP BY.</title>
		<link>http://www.artegrafico.net/blog/eliminar-registros-duplicados-de-una-tabla-usando-distinct-o-group-by.html</link>
		<comments>http://www.artegrafico.net/blog/eliminar-registros-duplicados-de-una-tabla-usando-distinct-o-group-by.html#comments</comments>
		<pubDate>Thu, 25 Mar 2010 17:54:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[create table]]></category>
		<category><![CDATA[distinct]]></category>
		<category><![CDATA[duplicados]]></category>
		<category><![CDATA[group by]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=598</guid>
		<description><![CDATA[DISTINCT es una palabra clave que usamos e nuestras consultas SQL para eliminar filas duplicadas. SELECT DISTINCT columna FROM tabla Ahora bien si queremos eliminar los registros duplicados de una tabla y copiarlos en una nueva podremos hacerlo con la palabra clave DISTICT o la cláusula GROUP BY que suele tener menos BUGS que la [...]]]></description>
			<content:encoded><![CDATA[<p><strong>DISTINCT </strong>es una palabra clave que usamos e nuestras consultas <strong>SQL </strong>para eliminar filas duplicadas.</p>
<pre class="brush:sql">SELECT DISTINCT columna FROM tabla</pre>
<p>Ahora bien si queremos eliminar los registros duplicados de una tabla y copiarlos en una nueva podremos hacerlo con la palabra clave <strong>DISTICT </strong>o la cláusula <strong>GROUP BY </strong>que suele tener menos BUGS que la primera.</p>
<pre class="brush:sql">Opción 1:
CREATE TABLE nueva_tabla AS SELECT DISTINCT columna FROM tabla;
Opcion 2:
CREATE TABLE nueva_tabla AS SELECT * FROM tabla GROUP BY (id);</pre>
<p>Eliminamos la tabla con los registros duplicados:</p>
<pre class="brush:sql">DROP TABLE tabla;</pre>
<p>Renombramos la nueva tabla por el nombre de la que ya teníamos:</p>
<pre class="brush:sql">RENAME TABLE tabla_nueva TO tabla;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/eliminar-registros-duplicados-de-una-tabla-usando-distinct-o-group-by.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creando un Script en PHP para chequear IPs en Listas negras (Blacklist)</title>
		<link>http://www.artegrafico.net/blog/creando-un-script-en-php-para-chequear-ips-en-listas-negras-blacklist.html</link>
		<comments>http://www.artegrafico.net/blog/creando-un-script-en-php-para-chequear-ips-en-listas-negras-blacklist.html#comments</comments>
		<pubDate>Mon, 14 Sep 2009 17:20:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[blacklist]]></category>
		<category><![CDATA[dnsbl]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spamhaus]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=573</guid>
		<description><![CDATA[Una lista negra (black list) es una lista donde se registran direcciones IPs que generan SPAM ya sea de forma voluntaria o involuntaria. Estas listas aunque las hay de pago suelen ser libres y cualquiera puede añadir una IP inocente de manera malintencionada por lo que también podemos solicitar ser removidos de ellas si hemos [...]]]></description>
			<content:encoded><![CDATA[<p>Una <strong>lista negra</strong> (<strong>black list</strong>) es una lista donde se registran direcciones IPs que generan SPAM ya sea de forma voluntaria o involuntaria. Estas listas aunque las hay de pago suelen ser libres y cualquiera puede añadir una IP inocente  de manera malintencionada por lo que también  podemos solicitar ser removidos de ellas si hemos sido incluidos.</p>
<p>Tanto chequear diferentes tipos de webs  con listas negras he decidido crear este pequeño <strong>Script en PHP</strong> que nos será de utilidad ya que comprueba una lista personalizada de <strong>Black List </strong>y nos devuelve el resultado en pantalla o a un email si se lo indicamos. Es totalmente personalizable y muy sencillo de modificar.</p>
<pre class="brush:c">if ($_POST['ip']) { $ip = $_POST['ip']; } 

function blacklist($ip) {
   $dnsbl=array("b.barracudacentral.org"=&gt;"",
   "bl.deadbeef.com"=&gt;"",
   "bl.emailbasura.org"=&gt;"",
   "bl.spamcannibal.org"=&gt;"",
   "bl.spamcop.net"=&gt;"Blacklist de Spamcop",
   "blackholes.five-ten-sg.com"=&gt;"",
   "blacklist.woody.ch"=&gt;"",
   "bogons.cymru.com"=&gt;"",
   "cbl.abuseat.org"=&gt;"Composite Blocking List)",
   "cdl.anti-spam.org.cn"=&gt;"",
   "combined.abuse.ch"=&gt;"",
   "combined.rbl.msrbl.net"=&gt;"",
   "db.wpbl.info"=&gt;"",
   "dnsbl-1.uceprotect.net"=&gt;"",
   "dnsbl-2.uceprotect.net"=&gt;"",
   "dnsbl-3.uceprotect.net"=&gt;"lista de pago",
   "dnsbl.ahbl.org"=&gt;"",
   "dnsbl.cyberlogic.net"=&gt;"",
   "dnsbl.inps.de"=&gt;"",
   "dnsbl.njabl.org"=&gt;"",
   "dnsbl.sorbs.net"=&gt;"rangos dinámicos",
   "drone.abuse.ch"=&gt;"",
   "drone.abuse.ch"=&gt;"",
   "duinv.aupads.org"=&gt;"",
   "dul.dnsbl.sorbs.net"=&gt;"rangos dinámicos",
   "dul.ru"=&gt;"",
   "dyna.spamrats.com"=&gt;"rangos dinámicos",
   "dynip.rothen.com"=&gt;"",
   "fl.chickenboner.biz"=&gt;"",
   "http.dnsbl.sorbs.net"=&gt;"",
   "images.rbl.msrbl.net"=&gt;"",
   "ips.backscatterer.org"=&gt;"",
   "ix.dnsbl.manitu.net"=&gt;"",
   "korea.services.net"=&gt;"Block Asian spam (Korea)",
   "misc.dnsbl.sorbs.net"=&gt;"",
   "noptr.spamrats.com"=&gt;"",
   "ohps.dnsbl.net.au"=&gt;"",
   "omrs.dnsbl.net.au"=&gt;"",
   "orvedb.aupads.org"=&gt;"",
   "osps.dnsbl.net.au"=&gt;"",
   "osrs.dnsbl.net.au"=&gt;"",
   "owfs.dnsbl.net.au"=&gt;"",
   "owps.dnsbl.net.au"=&gt;"",
   "phishing.rbl.msrbl.net"=&gt;"",
   "probes.dnsbl.net.au"=&gt;"",
   "proxy.bl.gweep.ca"=&gt;"",
   "proxy.block.transip.nl"=&gt;"",
   "psbl.surriel.com"=&gt;"Passive Spam Block List",
   "rbl.interserver.net"=&gt;"",
   "rdts.dnsbl.net.au"=&gt;"",
   "relays.bl.gweep.ca"=&gt;"",
   "relays.bl.kundenserver.de"=&gt;"",
   "relays.nether.net"=&gt;"",
   "residential.block.transip.nl"=&gt;"rangos dinámicos",
   "ricn.dnsbl.net.au"=&gt;"",
   "rmst.dnsbl.net.au"=&gt;"",
   "short.rbl.jp"=&gt;"",
   "smtp.dnsbl.sorbs.net"=&gt;"",
   "socks.dnsbl.sorbs.net"=&gt;"",
   "spam.abuse.ch"=&gt;"",
   "spam.dnsbl.sorbs.net"=&gt;"",
   "spam.rbl.msrbl.net"=&gt;"",
   "spam.spamrats.com"=&gt;"",
   "spamlist.or.kr"=&gt;"",
   "spamrbl.imp.ch"=&gt;"",
   "t3direct.dnsbl.net.au"=&gt;"",
   "tor.ahbl.org"=&gt;"",
   "tor.dnsbl.sectoor.de"=&gt;"",
   "torserver.tor.dnsbl.sectoor.de"=&gt;"",
   "ubl.lashback.com"=&gt;"Tracking Unsubscribe Abuse",
   "ubl.unsubscore.com"=&gt;"",
   "virbl.bit.nl","virus.rbl.jp"=&gt;"",
   "virus.rbl.msrbl.net"=&gt;"",
   "web.dnsbl.sorbs.net"=&gt;"",
   "wormrbl.imp.ch"=&gt;"",
   "sbl.spamhaus.org"=&gt;"Spamhaus Block List",
   "xbl.spamhaus.org"=&gt;"Spamhaus Exploits Block List",
   "pbl.spamhaus.org"=&gt;"Spamhaus Policy Block List",
   "zen.spamhaus.org"=&gt;"Spamhaus (Combinación Spamhaus)",
   "zombie.dnsbl.sorbs.net"=&gt;"",
   "1.apews.org"=&gt;"Anon. Postmasters Early Warning System",
   "2.apews.org"=&gt;"Anon. Postmasters Early Warning System",
   "bulk.rhs.mailpolice.com"=&gt;"domains",
   "porn.rhs.mailpolice.com"=&gt;"pornograf sites",
   "fraud.rhs.mailpolice.com"=&gt;"phising",
   "block.rhs.mailpolice.com"=&gt;"bulk y fraud",
   "dynamic.rhs.mailpolice.com"=&gt;"dinamicas",
   "adv.rhs.mailpolice.com"=&gt;"email marketing",
   "webmail.rhs.mailpolice.com"=&gt;"webmails services",
   "adult.rhs.mailpolice.com"=&gt;"adult sites, blogs etc",
   "redir.rhs.mailpolice.com"=&gt;"sites redirigidos");

if ($_POST['ip']) {
   $parte=explode(".",$ip);
   $rip=$parte[3].".".$parte[2].".".$parte[1].".".$parte[0];

   foreach ($dnsbl as $key=&gt;$value){
      if (checkdnsrr($rip.".".$key . '.',"A")) { $lista[]=$key." - ".$value; }
   }

   echo "&lt;ul&gt;";
   foreach ($lista as $server){
      echo "&lt;li&gt;".$server."&lt;/li&gt;";
      $bl .= $server."\n";
   }
   echo "&lt;/ul&gt;";  

   # ---------------------------------------------
   # - enviamos un reporte a un email.
   if ($_POST['report'] == "on") {
      $email = "su@email";
      $headers = "MIME-Version: 1.0\n";
      $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
      $headers .= "From: $email \r\n";
      $asunto = "Report Blacklist: $ip";
      $txt = "La ip $ip esta listada en:\n\n".$bl;
      mail($email, $asunto, $txt, $headers);
   } # fin reporte
   # ---------------------------------------------

} # fin if
} // fin funcion listas negras

if ($_POST['ip']) {
   echo "Su IP: &lt;strong&gt;".getenv('REMOTE_ADDR')." &lt;/strong&gt;esta en las siguientes listas negras:&lt;p /&gt;";
   echo blacklist($ip);
}</pre>
<p>El formulario en HTML quedaría de la siguiente forma:</p>
<pre class="brush:c">&lt;form method="post"&gt;
 &lt;input name="ip" type="text" /&gt;
 &lt;input name="report" type="checkbox" /&gt; Enviar reporte por email.
 &lt;input type="submit" value="Comprobar" /&gt;
&lt;/form&gt;</pre>
<p>Para una demo del script:<br />
<a href="http://www.artegrafico.net/laboratorio/php/blacklist.php">http://www.artegrafico.net/laboratorio/php/blacklist.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/creando-un-script-en-php-para-chequear-ips-en-listas-negras-blacklist.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Recuperar las claves de nuestros FTPs en Plesk</title>
		<link>http://www.artegrafico.net/blog/recuperar-las-claves-de-nuestros-ftps-en-plesk.html</link>
		<comments>http://www.artegrafico.net/blog/recuperar-las-claves-de-nuestros-ftps-en-plesk.html#comments</comments>
		<pubDate>Mon, 10 Aug 2009 10:39:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administración]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Plesk]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[claves]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=563</guid>
		<description><![CDATA[Recuperar una clave de FTP en PLESK es una tarea muy común por lo que para ello ejecutaremos la siguiente sentencia SQL sobre nuestra tabla PSA de PLESK.  Obtendremos un resumen con el nombre del dominio, usuario, clave, directorio home del ftp y la cuota en MB asignada al usuario del FTP. mysql -u admin [...]]]></description>
			<content:encoded><![CDATA[<p>Recuperar una clave de FTP en PLESK es una tarea muy común por lo que para ello ejecutaremos la siguiente sentencia SQL sobre nuestra tabla PSA de PLESK.  Obtendremos un resumen con el nombre del dominio, usuario, clave, directorio home del ftp y la cuota en MB asignada al usuario del FTP.</p>
<pre class="brush:sql">mysql -u admin -p
2.password: *******
3.mysql&gt; use psa</pre>
<pre class="brush:sql">SELECT
sys_users.login AS usuario,
accounts.password AS clave,
sys_users.home AS home,
sys_users.quota/1048/1024 AS cuota_en_mb
FROM sys_users
LEFT JOIN accounts on sys_users.account_id = accounts.id
ORDER BY sys_users.home ASC;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/recuperar-las-claves-de-nuestros-ftps-en-plesk.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LogWatch – análisis y reportes del sistema.</title>
		<link>http://www.artegrafico.net/blog/logwatch-analisis-y-reportes-del-sistema.html</link>
		<comments>http://www.artegrafico.net/blog/logwatch-analisis-y-reportes-del-sistema.html#comments</comments>
		<pubDate>Mon, 10 Aug 2009 10:20:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administración]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[logs]]></category>
		<category><![CDATA[LogWatch]]></category>
		<category><![CDATA[syslog]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=554</guid>
		<description><![CDATA[LogWatch realiza un análisis y reporte de los LOGS del sistema que suelen estar localizados en /var/log/ y se suele ejecutar cada noche enviandonos un correo con los resultados obtenidos. Los registros que se llevan a cabo en un sistema Linux como Gentoo son manejados por el demonio syslogd-ng y su archivo de configuración suele [...]]]></description>
			<content:encoded><![CDATA[<p><a href="www.logwatch.org">LogWatch</a> realiza un análisis y reporte de los LOGS del sistema que suelen estar localizados en /var/log/ y se suele ejecutar cada noche enviandonos un correo con los resultados obtenidos. Los registros que se llevan a cabo en un sistema Linux como Gentoo son manejados por el demonio<strong> syslogd-ng</strong> y su archivo de configuración suele estar localizado en /etc/syslog-ng/syslog-ng.conf.</p>
<p><a href="www.logwatch.org">LogWatch</a> es bastante útil para saber que está haciendo tu servidor  cada día sin tener que leerse decenas de LOGS ya que proporciona una bonito resumen  de cada servicio del sistema, tales como los paquetes instalados, emails enviados por tu servidor, errores de autentificación, estadísticas de apache, espacio en disco, información sobre posibles ataques, etc &#8230;</p>
<pre class="brush:bash"># tan sencillo como hacer un emerge.
emerge logwatch</pre>
<p>logwatch se configura de forma automática para ser ejecutado todas las noches y se crea dicha tarea en:</p>
<pre class="brush:bash">/etc/cron.daily/00-logwatch</pre>
<p>El fichero de configuración le podemos localizar en:<br />
/usr/share/logwatch/default.conf/logwatch.conf</p>
<p>El <strong>mail </strong>por defecto es enviado al usuario <strong>root </strong>y para que sea más accesible su lectura podemos redireccionarlo a un correo externo creando un <strong>alias </strong>en /var/qmail/alias/.qmail-root</p>
<p><strong>/usr/share/logwatch/default.conf/logfiles</strong><br />
Contiene información sobre los registros de logs y sus características.<br />
<strong>/usr/share/logwatch/default.conf/services</strong><br />
Contiene los ficheros de configuración específicos por cada servicio.</p>
<p>En <strong>Gentoo </strong>tendremos un problema con la configuración que viene por defecto ya que algunos servicios estarán fallando al crear dicho reporte. Para ello nos crearemos un fichero llamado /etc/logwatch/conf/override.conf para personalizarlo a nuestro gusto. Si una configuración esta definida en este ficheroo ignorará la que esté definida en el fichero de configuración inicial.</p>
<p>El ejecutable o script del programa esta localizado en:</p>
<p>/usr/sbin/logwatch.pl</p>
<p>En la página del programa podemos encontrar documentación detallada para <a href="http://www2.logwatch.org:8080/tabs/docs/HOWTO-Customize-LogWatch.html">crearnos nuestros propios ficheros de configuraciones.</a></p>
<p>Podemos testear el funcionamiento de Logwatch indicándole un servicio determinado:</p>
<pre class="brush:bash">/usr/sbin/logwatch --service qmail  --print --range today --debug 10</pre>
<p>Página Web Oficial:<br />
<a href="http://www2.logwatch.org:8080/">http://www2.logwatch.org:8080/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/logwatch-analisis-y-reportes-del-sistema.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como recuperar las claves de sus Bases de Datos de Plesk</title>
		<link>http://www.artegrafico.net/blog/como-recuperar-las-claves-de-sus-bases-de-datos-de-plesk.html</link>
		<comments>http://www.artegrafico.net/blog/como-recuperar-las-claves-de-sus-bases-de-datos-de-plesk.html#comments</comments>
		<pubDate>Thu, 02 Jul 2009 11:37:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administración]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Plesk]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[psa]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=544</guid>
		<description><![CDATA[Tan sencillo como realizar esta consulta a la Base de Datos psa de PLESK. Nos devolverá el dominio, nombre de la base de datos, usuario y clave seleccionada. Esta consulta nos listará todas las bases de datos y sus claves pero si queremos filtrarla para un determinado dominio debemos añadir una cláusula WHERE al final [...]]]></description>
			<content:encoded><![CDATA[<p>Tan sencillo como realizar esta consulta a la Base de Datos <strong>psa</strong> de PLESK. Nos devolverá el dominio, nombre de la base de datos, usuario y clave seleccionada. Esta consulta nos listará todas las bases de datos y sus claves pero si queremos filtrarla para un determinado dominio debemos añadir una cláusula WHERE al final de la consulta; (ejemplo: WHERE domains.name=&#8217;dominio.com&#8217;).</p>
<pre class="brush:c">mysql -u admin -p
password: *******
mysql&gt; use psa</pre>
<pre class="brush:sql">SELECT
data_bases.name AS bd,
db_users.login AS usuario,
accounts.password AS clave,
domains.name AS dominio,
data_bases.type AS tipo
FROM
db_users
INNER JOIN data_bases ON (db_users.db_id = data_bases.id)
INNER JOIN accounts ON (db_users.account_id = accounts.id)
INNER JOIN domains ON (data_bases.dom_id = domains.id)
ORDER BY domains.name ASC</pre>
<p><span style="color: #888888;">* Probado en Fedora Core 5 Plesk 8.6</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/como-recuperar-las-claves-de-sus-bases-de-datos-de-plesk.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>multilog: fatal: unable to lock directory … temporary failure</title>
		<link>http://www.artegrafico.net/blog/multilog-fatal-unable-to-lock-directory-temporary-failure.html</link>
		<comments>http://www.artegrafico.net/blog/multilog-fatal-unable-to-lock-directory-temporary-failure.html#comments</comments>
		<pubDate>Fri, 19 Jun 2009 17:20:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administración]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Qmail]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[multilog]]></category>
		<category><![CDATA[qmail]]></category>
		<category><![CDATA[qmail-smtp]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=538</guid>
		<description><![CDATA[Un error típico de Qmail al iniciarlo o reiniciarlo: multilog: fatal: unable to lock directory /var/log/qmail/: temporary failure multilog: fatal: unable to lock directory /var/log/qmailsmtp/: temporary failure Una solución sencilla para solucionarlo: # paramos el servicio. /etc/init.d/qmail stop # buscamos el proceso que está bloqueado. ps -ef &#124;grep qmail # matamos el proceso relacionado. kill [...]]]></description>
			<content:encoded><![CDATA[<p>Un error típico de Qmail al iniciarlo o reiniciarlo:</p>
<p>multilog: fatal: unable to lock directory /var/log/qmail/: temporary failure<br />
multilog: fatal: unable to lock directory /var/log/qmailsmtp/: temporary failure</p>
<p>Una solución sencilla para solucionarlo:</p>
<pre class="brush:bash"># paramos el servicio.
/etc/init.d/qmail stop

# buscamos el proceso que está bloqueado.
ps -ef |grep qmail

# matamos el proceso relacionado.
kill -9 numero-proceso

# volvemos a iniciar el servicio.
/etc/init.d/qmail start</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/multilog-fatal-unable-to-lock-directory-temporary-failure.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell Script para hacer copias de seguridad de nuestras bases de datos con ncftpput.</title>
		<link>http://www.artegrafico.net/blog/shell-script-para-hacer-copias-de-seguridad-de-nuestras-bases-de-datos-con-ncftpput.html</link>
		<comments>http://www.artegrafico.net/blog/shell-script-para-hacer-copias-de-seguridad-de-nuestras-bases-de-datos-con-ncftpput.html#comments</comments>
		<pubDate>Mon, 15 Jun 2009 17:17:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administración]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[ncftpput]]></category>
		<category><![CDATA[shell script]]></category>

		<guid isPermaLink="false">http://www.artegrafico.net/blog/?p=529</guid>
		<description><![CDATA[Pues ya estoy aquí de nuevo para escribir un shell script que realiza una copia de seguridad de nuestras Bases de Datos y mediante ncftpput las enviamos a nuestro servidor FTP. # DATOS SERVIDOR=GENTOO-VPS FECHA=$(date +"%m-%d-%Y") # mm-dd-yyyy EMAIL=su@email ASUNTO="Backup SQL" TMP=/home/backup/tmp # DATOS BD BD_USUARIO=root BD_CLAVE=******* # DATOS FTP NCFTP="/usr/bin/ncftpput" FTP=ftp.dominio.com FTP_USUARIO=user FTP_CLAVE=****** FTP_DESTINO="./servidores/$SERVIDOR/MySQL/" [...]]]></description>
			<content:encoded><![CDATA[<p>Pues ya estoy aquí de nuevo para escribir un<strong> shell script </strong>que realiza una copia de seguridad de nuestras Bases de Datos y mediante <strong>ncftpput </strong>las enviamos a nuestro servidor FTP.</p>
<pre class="brush:bash"># DATOS
SERVIDOR=GENTOO-VPS
FECHA=$(date +"%m-%d-%Y") # mm-dd-yyyy
EMAIL=su@email
ASUNTO="Backup SQL"
TMP=/home/backup/tmp

# DATOS BD
BD_USUARIO=root
BD_CLAVE=*******

# DATOS FTP
NCFTP="/usr/bin/ncftpput"
FTP=ftp.dominio.com
FTP_USUARIO=user
FTP_CLAVE=******
FTP_DESTINO="./servidores/$SERVIDOR/MySQL/"

for BD in `mysql -u$BD_USUARIO -p$BD_CLAVE -e "show databases" -B -N`
do
    mysqldump -u$BD_USUARIO -p$BD_CLAVE $BD &gt; $TMP/$BD-$FECHA.sql
    $NCFTP -m -u $FTP_USUARIO -p $FTP_CLAVE $FTP $FTP_DESTINO/$BD/ $TMP/$BD-$FECHA.sql
    rm -f $TMP/$BD-$FECHA.sql
done

mail -s "$ASUNTO - $FECHA - $SERVIDOR" $EMAIL</pre>
<p>Para optimizar la tarea podemos incluirla en nuestro <strong>crontab</strong> e incluimos la siguiente linea con la programación de la tarea y donde está ubicado nuestro script. Se ejecutará a las 2 de la madrugada todos los días:</p>
<pre class="brush:bash">crontab -e
0       2       *       *       *       /home/backup/backup-bd-diaria.sh</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.artegrafico.net/blog/shell-script-para-hacer-copias-de-seguridad-de-nuestras-bases-de-datos-con-ncftpput.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

