<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3461851412014662219</id><updated>2024-10-07T06:01:49.038+02:00</updated><category term="Internet"/><category term="error"/><category term="windows"/><category term="VMware"/><category term="Microsoft"/><category term="proxy"/><category term="Active Directory"/><category term="FreeBSD"/><category term="Google"/><category term="Squid"/><category term="appliance"/><category term="free"/><category term="router"/><category term="Exchange"/><category term="Unix"/><category term="firewall"/><category term="iptables"/><category term="linux"/><category term="script"/><category term="seguridad"/><category term="servidor"/><category term="software"/><category term="tutorial"/><category term="virtualización"/><category term="Alternativa"/><category term="Cisco"/><category term="DLL"/><category term="DNS"/><category term="ESXi"/><category term="Gmail"/><category term="Google Apps"/><category term="IMAP"/><category term="Internet Explorer"/><category term="Outlook"/><category term="VBscript"/><category term="cliente"/><category term="instalación"/><category term="pc"/><category term="programación"/><category term="replacement"/><category term="routing"/><category term="vpn"/><category term="windows server"/><category term="Apple"/><category term="Apps"/><category term="C"/><category term="Chrome"/><category term="Crisis"/><category term="Delphi"/><category term="Dynamics"/><category term="Empresas"/><category term="Fedora"/><category term="File"/><category term="GDB"/><category term="GNU"/><category term="GPO"/><category term="HP"/><category term="LDAP"/><category term="Lazarus"/><category term="MSXML3.DLL"/><category term="MSXML6"/><category term="Mac"/><category term="MongoDB"/><category term="NAV"/><category term="OS X"/><category term="OpenLDAP"/><category term="Parser"/><category term="Protection"/><category term="SFC"/><category term="SQL Server"/><category term="UI"/><category term="Verizon"/><category term="VirtualBox"/><category term="WFP"/><category term="WMI"/><category term="WWW"/><category term="Web"/><category term="XML"/><category term="Xcode"/><category term="Yahoo groups"/><category term="administrador"/><category term="archivo"/><category term="backup"/><category term="blog"/><category term="blogger"/><category term="buscador"/><category term="converter"/><category term="correo"/><category term="crossplatform"/><category term="descargar"/><category term="descripción"/><category term="estación"/><category term="ethernet"/><category term="expresiones regulares"/><category term="grupos"/><category term="impresión"/><category term="malware"/><category term="netlogon"/><category term="ordenador"/><category term="python"/><category term="regex"/><category term="sistemas"/><category term="spyware"/><category term="sysadmin"/><category term="vSphere"/><category term="virus"/><title type='text'>The Debug Machine</title><subtitle type='html'>Blog del Administrador de Sistemas Informáticos, de sus hazañas en tierras binarias, de los singulares acontecimientos en que se vio envuelto, y de cómo se desenvolvió.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-3273442839961872683</id><published>2022-08-07T23:44:00.000+02:00</published><updated>2022-08-07T23:44:26.375+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="VirtualBox"/><category scheme="http://www.blogger.com/atom/ns#" term="virtualización"/><title type='text'>VirtualBox y directorios compartidos en Linux</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;VirtualBox es probablemente el sistema de virtualización de escritorio más extendido del mundo, debido a su gratuidad, funcionalidad y rendimiento aceptable (aunque lejos de los productos VMWare). Sin embargo, a veces sus problemas de usabilidad provocan algún que otro dolor de cabeza.

Uno de los más habituales se da cuando compartes un directorio entre la máquina anfitrión y una máquina virtualizada Linux.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhTgDQ9Htxc3NB1VHZvM-nAA9Rq0zthXk7a6GHJIvU5RV4gHd1HC96e_x8g9T72rHuvNbt4aqs_7qpPInN70k21I7edZvznUnEmuiLQJ01_6es6EfQ23PPa9CXNWDSrcht9RFvIQwJ6VsgAyA0UPtnEJNoR1vDeELlOsBmQTF0RK9-C2gDP0QZuVy_69g&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;272&quot; data-original-width=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhTgDQ9Htxc3NB1VHZvM-nAA9Rq0zthXk7a6GHJIvU5RV4gHd1HC96e_x8g9T72rHuvNbt4aqs_7qpPInN70k21I7edZvznUnEmuiLQJ01_6es6EfQ23PPa9CXNWDSrcht9RFvIQwJ6VsgAyA0UPtnEJNoR1vDeELlOsBmQTF0RK9-C2gDP0QZuVy_69g=s16000&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Típica configuración de directorio compartido desde el anfitrión hacia el huésped.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Las opciones de configuración son muy claras al respecto. Según la teoría, ahora en el Linux virtualizado deberíamos tener un directorio montado como &lt;b&gt;/mnt/src&lt;/b&gt;&amp;nbsp;y que daría acceso al contenido de la máquina física en &lt;b&gt;d:\home\jam\src&lt;/b&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sin embargo, al intentar accederr desde el Linux virtual, obtenemos un sonoro error:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjTf7cS5-UkkqFflBm5C6agjE1C3a9QshFo0M2UzvE06y_vI62GJwUwgbx3tbaFw6wecNhzfRmHLGnBbvTZeUS7a0m67-jKI7pcS6f281CoIVnS-D5atNymxYhCD4oo-0pYn3wxU80pV93foesnI2b-zOV3UCH_MF4DNToq-pfKwR-HskAJrtevXm6UfQ&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;215&quot; data-original-width=&quot;499&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjTf7cS5-UkkqFflBm5C6agjE1C3a9QshFo0M2UzvE06y_vI62GJwUwgbx3tbaFw6wecNhzfRmHLGnBbvTZeUS7a0m67-jKI7pcS6f281CoIVnS-D5atNymxYhCD4oo-0pYn3wxU80pV93foesnI2b-zOV3UCH_MF4DNToq-pfKwR-HskAJrtevXm6UfQ=s16000&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;¡Oh,.no! A la porra nuestra felicidad.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;¡Quiero parao!&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;No tan deprisa. Lo primero que se te ha pasado por la mente, a ti también, es abrir la consola y calzar un &lt;b&gt;chmod -R 777 &lt;/b&gt;o alguna bestialidad equivalente. Sí, bueno... quizás habría funcionado. Pero aquí nos gusta hacer las cosas con un poco más de elegancia.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;VirtualBox nos tiene preparado algo muy especial para este propósito: el grupo local &lt;b&gt;vboxsf&lt;/b&gt;&amp;nbsp;en la máquina huésped. Si nos fijamos, el directorio compartido queda montado con dicho grupo, algo que podemos ver con un simple &lt;b&gt;ls -l&lt;/b&gt;&amp;nbsp;o similar:&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiT66VPcaed85h5nfDR1fYK86bsUYpMDrS6HCRRy4Px8D16oK7ZqWus0SsCh0QI9KhMj16Ub16OPWn7DJDPqBpf2vEPKe6T2_E_PvhGgMjPRczE_ISYzgmErdGEz7HmfXuZKBSbGSWA6aP19SavbeZLjx--WCmrRm7O0VgeQz21ax0hGGgFPBnof8xohA&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;340&quot; data-original-width=&quot;663&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiT66VPcaed85h5nfDR1fYK86bsUYpMDrS6HCRRy4Px8D16oK7ZqWus0SsCh0QI9KhMj16Ub16OPWn7DJDPqBpf2vEPKe6T2_E_PvhGgMjPRczE_ISYzgmErdGEz7HmfXuZKBSbGSWA6aP19SavbeZLjx--WCmrRm7O0VgeQz21ax0hGGgFPBnof8xohA=s16000&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;¡Estos niños de Innotek pensaron en todo en su momento!&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;¿Cuál es, entonces, la solución?&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Sencillo: añadir nuestro usuario al grupo &lt;b&gt;vboxsf&lt;/b&gt;&amp;nbsp;con un simple comando como este (que puede variar según el &lt;i&gt;sabor&lt;/i&gt;&amp;nbsp;de Linux o Unix que tengáis):&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;
  &lt;pre style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #01ffff; font-family: courier;&quot;&gt;sudo usermod -G vboxsf -a $USER&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Obviamente, si el usuario que queréis añadir no es el mismo con el que estáis logueados (y al que apunta la variable de entorno $USER) tendréis que especificarlo manualmente.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Para finalizar, solo tendréis que cerrar la sesión y volverla a iniciar (o reiniciar el equipo).&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;¡A disfrutar!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/3273442839961872683/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2022/08/virtualbox-y-directorios-compartidos-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3273442839961872683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3273442839961872683'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2022/08/virtualbox-y-directorios-compartidos-en.html' title='VirtualBox y directorios compartidos en Linux'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEhTgDQ9Htxc3NB1VHZvM-nAA9Rq0zthXk7a6GHJIvU5RV4gHd1HC96e_x8g9T72rHuvNbt4aqs_7qpPInN70k21I7edZvznUnEmuiLQJ01_6es6EfQ23PPa9CXNWDSrcht9RFvIQwJ6VsgAyA0UPtnEJNoR1vDeELlOsBmQTF0RK9-C2gDP0QZuVy_69g=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-8225358096106350874</id><published>2019-10-19T12:34:00.000+02:00</published><updated>2019-10-20T00:54:53.460+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="backup"/><category scheme="http://www.blogger.com/atom/ns#" term="descargar"/><category scheme="http://www.blogger.com/atom/ns#" term="grupos"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="programación"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="script"/><category scheme="http://www.blogger.com/atom/ns#" term="Verizon"/><category scheme="http://www.blogger.com/atom/ns#" term="Yahoo groups"/><title type='text'>Yahoo! Groups desaparecerá en unos días. ¡Descárgate tus grupos!</title><content type='html'>Tal y como suena: un desastre.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://groups.yahoo.com/neo&quot; target=&quot;_blank&quot;&gt;Yahoo! Groups&lt;/a&gt; ha sido durante más de dos décadas (no olvidemos que comenzó como un servicio llamado Onelist que Yahoo adquirió tras su fusión con eGroups) un punto de encuentro de miles de personas que, mucho antes de que las famosas &lt;i&gt;redes sociales&lt;/i&gt;&amp;nbsp;lo inundasen todo, compartían interminables e interesantes charlas que podían indistintamente leerse vía web o usando nuestro email estándar.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ahora, tras 23 años, un pedazo de historia de Internet (y por tanto del conocimiento universal) va a desaparecer para siempre: Yahoo! (actualmente propiedad de Verizon) ha anunciado que antes de final de año será &lt;b&gt;eliminado todo el contenido acumulado en Yahoo! Groups&lt;/b&gt; desde la era de Onelist. Esto incluye todos los mensajes, links, adjuntos y las útiles secciones de archivos que cada grupo albergaba.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El calendario parece que es el siguiente: desde el próximo 28 de octubre (¡eso es dentro de diez días!) ya no se podrá subir nuevo contenido. El 14 de diciembre, &lt;b&gt;todo el contenido será eliminado&lt;/b&gt;. Para colmo, Yahoo! parece que no provee ningún mecanismo tan fantástico como el que tienen las cuentas de Google para descargar selectivamente todo lo que nos interese, algo que vino muy bien cuando eliminaron la versión de consumo de Google+.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;!-- debugmachine_sidebar-right-1_AdSense1_200x200_as --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:200px;height:200px&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;7090113221&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;h3&gt;
Pero, tranquilidad. Hay solución.&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Bueno, o algo parecido. Por desgracia, Yahoo! no ha publicado nunca una API para el producto Yahoo! Groups, lo que significa que no hay demasiadas herramientas que puedan automatizadamente explotar los datos almacenados en los distintos grupos. Las (escasas) utilidades disponibles se conectan consumiendo la propia UI web lo que, además de mucho más difícil de implementar, es menos eficiente y menos tolerante a cambios en el producto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A pesar de todo, hemos seleccionado algunas opciones que pueden dar una solución (parcial) al inminente problema (e incomprensible tragedia).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;
Opción 1: descargar tus datos desde la cuenta Verizon/Yahoo!&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Cuando antes dijimos que no se puede hacer una descarga masiva al estilo de las cuentas de Google, no dijimos toda la &lt;i&gt;verdad. &lt;/i&gt;Si bien en esencia es cierto que no podemos rescatar toda la valiosa información de los grupos, podemos al menos rescatar el material &lt;b&gt;propio&lt;/b&gt;, es decir, aquellos mensajes redactados por nosotros o aquellos archivos que hubiésemos subido.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para ello basta con ir al panel de control de la cuenta Yahoo! en&amp;nbsp;&lt;a href=&quot;https://yahoo.mydashboard.oath.com/&quot;&gt;https://yahoo.mydashboard.oath.com&lt;/a&gt;&amp;nbsp;(nos pedirá iniciar sesión) y buscar, abajo del todo, la opción &quot;Solicitar una descarga&quot;:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQfem-YgxfyKMlXvcAk8dbgT6-VyL5nRjSWj2FPMMPLqkNJ1cFxeDJbRgV0sUnNJF6qfQcLCyZRtQB-nYPAil5u3Y8vL0WMOXgcOhvjnvCmebSkH6lNWIkjZwdTGzxyTAXE-70IN-s4JB/s1600/yahoo01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;163&quot; data-original-width=&quot;553&quot; height=&quot;94&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQfem-YgxfyKMlXvcAk8dbgT6-VyL5nRjSWj2FPMMPLqkNJ1cFxeDJbRgV0sUnNJF6qfQcLCyZRtQB-nYPAil5u3Y8vL0WMOXgcOhvjnvCmebSkH6lNWIkjZwdTGzxyTAXE-70IN-s4JB/s320/yahoo01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
para a continuación marcar el producto que necesitamos:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0SkaZ3ufL3wt-_VB7gxvwoQ8hTYf1_fZ7PzOO8O48Ekb54-4M8P8mrxnXsCUvp4HXNGM9KTPTe8yNamr2Sl5TmYsKXulw_bUHNoCQ8lYVc_ZFrqCVHTpFKB5bGa1Pee_yEaze6gRqdaLu/s1600/yahoo02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;240&quot; data-original-width=&quot;561&quot; height=&quot;136&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0SkaZ3ufL3wt-_VB7gxvwoQ8hTYf1_fZ7PzOO8O48Ekb54-4M8P8mrxnXsCUvp4HXNGM9KTPTe8yNamr2Sl5TmYsKXulw_bUHNoCQ8lYVc_ZFrqCVHTpFKB5bGa1Pee_yEaze6gRqdaLu/s320/yahoo02.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Tras confirmar la dirección de email en el siguiente paso, se nos enviará un link (puede tardar horas o días según el tamaño) desde el que podremos descargar un archivo comprimido con el material.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sin embargo, esta funcionalidad se nos antoja insuficiente, especialmente si somos administradores de algún grupo y no queremos que se pierda nada (algunos grupos son realmente valiosas fuentes de información que hoy en día no se encuentra en ningún otro rincón de Internet), ya que el contenido que descargamos directamente de Yahoo! es exclusivamente el que hayamos generado nosotros mismos (que es en muchos casos el menos interesante).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por este motivo, proponemos una&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;
Opción 2: usar el script &quot;yahoo-groups-backup &quot;&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Esta opción permite descargar localmente mucho más material: todos los mensajes (tanto propios como ajenos) así como todos los archivos subidos al grupo. Sigue sin ser una solución perfecta, ya que no parece descargar el apartado de links ni el de fotos, pero al menos permite rescatar el grueso de la información relevante.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sin embargo, no va a ser un camino de rosas: esta aplicación es de esos programas que encanta desarrollar a los informáticos &lt;i&gt;nerd&lt;/i&gt; fanáticos del Python y de Linux con una &lt;b&gt;absoluta carencia de empatía con el usuario final.&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El script, que podía haberse desarrollado de una manera mucho más sencilla tecnológicamente plantea de entrada unos requisitos previos de software bastante pomposos, así como una usabilidad &lt;i&gt;anti-usuario &lt;/i&gt;(valga la contradicción) que obliga a realizar todas las operaciones en modo consola y no permite fácilmente administrar el material descargado.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: justify;&quot;&gt;
Paso 1: instalamos Python&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Si tu ordenador es un Mac, casi que puedes saltarte este paso porque lo más probable es que Python venga ya instalado en tu versión de &lt;a href=&quot;https://www.apple.com/lae/macos/&quot; target=&quot;_blank&quot;&gt;macOS&lt;/a&gt;. En caso de ser cualquier otro sistema &quot;tipo-Unix&quot; dependerá de qué distribución se trate pero, es muy probable que también venga preinstalado o que baste con invocar a tu gestor de paquetes favorito (por ejemplo &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;apt-get install python3.7&lt;/span&gt; para distribuciones basadas en Debian, o lo propio con Yum para distribuciones basadas en RedHat).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En caso de Windows, basta con descargarse la versión instalable del siguiente enlace:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://www.python.org/downloads/&quot;&gt;https://www.python.org/downloads/&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
y seguir los pasos de la instalación por defecto. Debemos asegurarnos que la variable de entorno PATH queda correctamente actualizada con la ruta de los binarios.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: justify;&quot;&gt;
Paso 2: instalamos MongoDB&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Cuando antes dije que esta aplicación era absolutamente user-unfriendly me refería a cosas como esta. Para hacer un cliente web que descargue unos datos, tener que requerir Python y hasta una instancia local de MongoDB me parece desproporcionado y que rompe por completo con la norma de usar siempre la mínima complejidad necesaria al diseñar una solución software. Pero el problema es que la forma de hacer las cosas actual (y de esto la &lt;i&gt;consultoría&lt;/i&gt; tiene &lt;b&gt;mucho&lt;/b&gt;&amp;nbsp;de culpa, de eso hablaremos otro día) es así de horrible.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Al grano: sí, lo habéis leído bien. Hay que instalar localmente MongoDB (¿para cuándo un icono &lt;i&gt;facepalm&lt;/i&gt;&amp;nbsp;en Blogger, señores de Google?). Podéis descargarla de aquí y seguir los pasos de instalación (recomiendo no complicarse la vida y hacer una &quot;full install&quot;):&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://www.mongodb.com/download-center/community&quot;&gt;https://www.mongodb.com/download-center/community&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: justify;&quot;&gt;
Paso 3: descargamos el driver usado por el script&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este driver (usado mediante Selenium tal y como en los tests automatizados típicos de un desarrollo con filosofía devops hace las veces de cliente web &quot;headless&quot; del cual extraer, a través de manipulación del DOM, la información que queremos (recordemos que no hay una API al uso de Yahoo! Groups). En este caso la instalación consiste en copiar el ejecutable a cualquier ruta que esté en la variable de entorno PATH. En el caso de Windows, una manera sencilla es copiarlo a la propia carpeta de instalación de Python ya que probablemente no le vais a dar ningún otro uso.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Lo podéis descargar de aquí:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://chromedriver.chromium.org/&quot;&gt;https://chromedriver.chromium.org&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: justify;&quot;&gt;
Paso 4: instalamos el script &quot;yahoo-groups-backup&quot;&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El script original se ha quedado desfasado y tenía varios bugs que lo hacen inservible para nuestros propósitos. Por eso vamos a utilizar un &lt;i&gt;fork&lt;/i&gt;&amp;nbsp;creado a partir del original que soluciona algunos problemas. Lo podemos encontrar en&amp;nbsp;&lt;a href=&quot;https://github.com/hrenfroe/yahoo-groups-backup&quot;&gt;https://github.com/hrenfroe/yahoo-groups-backup&lt;/a&gt;&amp;nbsp;y podemos descargarlo con cliente Git o bien descargar el archivo zip y descomprimirlo a algún lugar del disco duro. &lt;i&gt;Importante: el subdirectorio donde descomprimamos el script, para evitar potenciales problemas, debería tener permisos de escritura para todos los usuarios&lt;/i&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez descomprimido, y asumiendo que ya está instalado Python, hay que entrar desde el intérprete de comandos de vuestra elección al subdirectorio del script y ejecutar lo siguiente para su instalación:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;pip install -r requirements.txt&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Esto provocará que se instalen las dependencias necesarias en Python para que el programa funcione.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
También necesitamos editar el archivo &lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;settings.yaml.template&lt;/span&gt; para configurar las credenciales de acceso de nuestra cuenta de Yahoo! con la que accederemos a los grupos:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; login: micuenta@yahoo.es&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; password: mipassword&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;
Paso 5: descargamos un grupo&lt;/h4&gt;
Ya con todo configurado, solo queda empezar a descargar material (recordemos, solo mensajes y archivos, pues el script no soporta otros elementos como la lista de links del grupo).&lt;br /&gt;
&lt;br /&gt;
Para ello tenemos que ejecutar desde dentro del mismo subdirectorio donde esté el script, el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;./yahoo-groups-backup.py scrape_messages --driver chrome &lt;i&gt;&lt;b&gt;nombre_grupo&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
si estamos en sistemas tipo Unix, o bien lo siguiente en caso de Windows:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;yahoo-groups-backup.py scrape_messages --driver chrome &lt;i&gt;&lt;b&gt;nombre_grupo&lt;/b&gt;&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
Breve explicación: el primer comando es obviamente el script. El parámetro &lt;b&gt;scrape_messages&lt;/b&gt;&amp;nbsp;es para indicar que queremos descargar todos los mensajes. Se puede sustituir por &lt;b&gt;scrape_files&lt;/b&gt;&amp;nbsp;si lo que queremos es descargar los &lt;b&gt;archivos&lt;/b&gt;&amp;nbsp;alojados en el grupo. Obviamente el parámetro &lt;b&gt;nombre_grupo&lt;/b&gt;&amp;nbsp;es el nombre o identificador que el grupo tiene dentro del producto de Yahoo! Groups.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Consideraciones finales&lt;/h3&gt;
&lt;br /&gt;
Parece ser que el script tiene algunos problemas (algunos derivados del driver Chromium para Selenium). Iremos actualizando la entrada con aquellos &lt;i&gt;issues&amp;nbsp;&lt;/i&gt;y las soluciones que vayan apareciendo. También podéis compartirlas en los comentarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/8225358096106350874/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2019/10/yahoo-groups-desaparecera-en-unos-dias.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/8225358096106350874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/8225358096106350874'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2019/10/yahoo-groups-desaparecera-en-unos-dias.html' title='Yahoo! Groups desaparecerá en unos días. ¡Descárgate tus grupos!'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipQfem-YgxfyKMlXvcAk8dbgT6-VyL5nRjSWj2FPMMPLqkNJ1cFxeDJbRgV0sUnNJF6qfQcLCyZRtQB-nYPAil5u3Y8vL0WMOXgcOhvjnvCmebSkH6lNWIkjZwdTGzxyTAXE-70IN-s4JB/s72-c/yahoo01.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>Calle de Columela, 11, 28001 Madrid, Spain</georss:featurename><georss:point>40.421204188138795 -3.6866308380389228</georss:point><georss:box>40.0345321881388 -4.3320778380389227 40.807876188138792 -3.0411838380389229</georss:box></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-4976195405155770937</id><published>2018-09-27T10:30:00.001+02:00</published><updated>2019-09-18T16:02:05.679+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="UI"/><title type='text'>¿Tú también odias las pestañas del nuevo Google Chrome? Lee esto</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Hace ahora 10 años, &lt;a href=&quot;http://misshapenreality.blogspot.com/2009/10/ahora-si-google-chrome-el-mejor.html&quot; target=&quot;_blank&quot;&gt;Google lanzó el que pronto se convertiría&lt;/a&gt; en el navegador más usado del mundo, logrando lo que parecía imposible que es desbancar al todo poderoso (y nada estándar) Internet Explorer de Microsoft; un navegador que nació defectuoso y &lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft_litigation#Anti-trust&quot; target=&quot;_blank&quot;&gt;cuyo único mérito&lt;/a&gt; fue formar parte del sistema operativo Windows a partir de su versión 95.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Hasta la llegada de Chrome, vimos desfilar variados navegadores que arraigaron más (Netscape, Firefox) o menos (Opera) y que mejoraban las deficiencias de Internet Explorer de uno u otro modo. Chrome sin embargo llegó para mejorar de un plumazo las deficiencias de todos los anteriormente citados y además ofrecer un vertiginoso motor Javascript escrito íntegramente en lenguaje ensamblador y que se convertiría en la piedra angular del nuevo paradigma web.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una de las cosas que me gustó más en su momento y que lo diferenciaba de otros navegadores era su estética y el diseño de sus pestañas con forma trapezoidal. Por entonces la alternativa era el malogrado Firefox pero cuyo aspecto visual dañaba la retina.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;
Actualización ¿innecesaria?&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pero si has llegado hasta aquí es porque precisamente te molesta el aspecto que tiene el nuevo Google Chrome tras la última actualización, en la que incomprensiblemente se vuelve al aspecto &lt;i&gt;precámbrico &lt;/i&gt;que caracteriza a Firefox:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuYf-4mU-EbEO5zloq-l3PFMNNf98xa7hlLtyly29ZXgZExVrPI34zVAi6LSP8TuJKeIRMAVv3uy1AzBQaY1MXgibTDk1oHzOfaP8RtB4yXmoUYxDgzt_IwhLZ_qCm5UUsjtXfDHoj7mNn/s1600/tabs.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;289&quot; data-original-width=&quot;829&quot; height=&quot;220&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuYf-4mU-EbEO5zloq-l3PFMNNf98xa7hlLtyly29ZXgZExVrPI34zVAi6LSP8TuJKeIRMAVv3uy1AzBQaY1MXgibTDk1oHzOfaP8RtB4yXmoUYxDgzt_IwhLZ_qCm5UUsjtXfDHoj7mNn/s640/tabs.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por suerte para ti y para mí los desarrolladores de Google han dejado una puerta trasera para configurar el aspecto de los tabs.&lt;br /&gt;
&lt;br /&gt;
Para ello solo hay que abrir dentro de Chrome el siguiente enlace interno:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;chrome://flags/&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;chrome://flags&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
que nos dará acceso a la pantalla de configuración interna del navegador donde podemos &quot;trucarlo&quot; con cientos de opciones ocultas. En la barra de búsqueda de arriba buscad el texto &quot;UI Layout&quot; y aparecerá la siguiente configuración:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtYxV-JOE-3QUWyonlYmuBA5V6qHGHgkWY3DcRovyCbo793r4RgSclsK0Yz06W_1qFesVR-DJ7_osYpL1YZC8QLxT8vMGJF7JrH6jGu6naIoVBszr8zMISC6YlQBoQlJlPy9ZbYMoHKYM1/s1600/tabs.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;496&quot; data-original-width=&quot;880&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtYxV-JOE-3QUWyonlYmuBA5V6qHGHgkWY3DcRovyCbo793r4RgSclsK0Yz06W_1qFesVR-DJ7_osYpL1YZC8QLxT8vMGJF7JrH6jGu6naIoVBszr8zMISC6YlQBoQlJlPy9ZbYMoHKYM1/s640/tabs.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
La opción &lt;b&gt;default&lt;/b&gt;&amp;nbsp;es la que viene ahora seleccionada por defecto y que muestra esas pestañas tan espantosas. Si deseamos volver a nuestras queridas pestañas de Chrome, basta con seleccionar &lt;b&gt;Normal&lt;/b&gt;&amp;nbsp;y reabrir el navegador, y.... et voilà!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiypWYlqEfBBstzEwjiO9d0I61KBZ02z0-y5wWVHwRoOw2FvbR7-RVXDbLw33Qp7FN81MVjrmDtRGEYSwLSiR4E4LJ1wHYMrEMz1vnCc_SvyO0S3H0d4se_uPu_1VUiJ_NQag_x_Wo5Dy12/s1600/tabs.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;215&quot; data-original-width=&quot;553&quot; height=&quot;155&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiypWYlqEfBBstzEwjiO9d0I61KBZ02z0-y5wWVHwRoOw2FvbR7-RVXDbLw33Qp7FN81MVjrmDtRGEYSwLSiR4E4LJ1wHYMrEMz1vnCc_SvyO0S3H0d4se_uPu_1VUiJ_NQag_x_Wo5Dy12/s400/tabs.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Los otros valores del desplegable permiten acceder a variantes de los estilos enfocadas en dispositivos táctiles, convertibles, etc. ¡Pruébalas!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/4976195405155770937/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2018/09/tu-tambien-odias-las-pestanas-del-nuevo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/4976195405155770937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/4976195405155770937'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2018/09/tu-tambien-odias-las-pestanas-del-nuevo.html' title='¿Tú también odias las pestañas del nuevo Google Chrome? Lee esto'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuYf-4mU-EbEO5zloq-l3PFMNNf98xa7hlLtyly29ZXgZExVrPI34zVAi6LSP8TuJKeIRMAVv3uy1AzBQaY1MXgibTDk1oHzOfaP8RtB4yXmoUYxDgzt_IwhLZ_qCm5UUsjtXfDHoj7mNn/s72-c/tabs.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-5983736460816337832</id><published>2016-02-24T15:26:00.001+01:00</published><updated>2024-02-18T18:31:24.889+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="expresiones regulares"/><category scheme="http://www.blogger.com/atom/ns#" term="programación"/><category scheme="http://www.blogger.com/atom/ns#" term="regex"/><title type='text'>Algoritmo para búsquedas con comodines (wildcards)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Recientemente andaba yo enredado en un proyecto personal de poca trascendencia pero que me obligó a hacer una implementación completa de un sistema de archivos FAT a bajo nivel.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La FAT es un sistema de archivos muy simple para los estándares de hoy y la implementación fue muy fácil y rápida.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sin embargo, en el proyecto además se necesitaba agregar algunas funciones típicas de sistemas operativos de &lt;i&gt;sabor Microsoft&lt;/i&gt;, entre ellas la habitual búsqueda por comodines o wildcard. Pues esto, que parece una tontería, me tuvo filosofando para su implementación más tiempo que casi el resto de la implementación.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;&lt;script async=&quot;&quot; src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-6913768317745308&quot; data-ad-format=&quot;fluid&quot; data-ad-layout=&quot;in-article&quot; data-ad-slot=&quot;5214885235&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Se me ocurrieron diferentes acercamientos al problema de interpretar una cadena cualquiera que usase el comodín asterisco (*) para sustituir una subcadena cualquiera y el interrogante (?) para sustituir cualquier carácter coincidente en esa posición. Pensé en aplicar mis oxidados conocimientos de autómatas y lenguajes, o también una simple rutina al estilo amateur a base de recorrer las cadenas con un bucle e ir contando caracteres e intentando cuadrarlo todo usando &lt;a href=&quot;https://es.wikipedia.org/wiki/C%C3%B3digo_espagueti&quot; target=&quot;_blank&quot;&gt;código spaghetti&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pero finalmente opté por la implementación más sencilla y elegante, si bien no la más eficiente: convertir los viejos comodines de tipo DOS a &lt;a href=&quot;https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular&quot; target=&quot;_blank&quot;&gt;expresiones regulares&lt;/a&gt; de las que hoy en día se usan para todo. Cualquier lenguaje de programación moderno permite el uso de regex cuyo parseo es transparente para el programador.&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para ello basta con buscar las equivalencias necesarias entre comodines DOS y expresiones regulares o regex:&lt;/div&gt;
&lt;br /&gt;
&lt;style&gt;
#customers {
    font-family: &quot;Trebuchet MS&quot;, Arial, Helvetica, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

#customers td, #customers th {
    border: 1px solid #ddd;
    text-align: left;
    padding: 8px;
}
#customers tr:nth-child(even){background-color: #f2f2f2}
#customers tr:hover {background-color: #ddd;}
#customers th {
    padding-top: 12px;
    padding-bottom: 12px;
    background-color: #4CAF50;
    color: white;
}
&lt;/style&gt;

&lt;br /&gt;
&lt;table id=&quot;customers&quot;&gt;
&lt;thead style=&quot;background: rgb(224, 224, 255);&quot;&gt;
&lt;tr&gt;
&lt;td&gt;Función&lt;/td&gt;&lt;td&gt;Wildcard&lt;/td&gt;&lt;td&gt;Regex&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sustituye un carácter en la posición indicada&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;td&gt;[^\.]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sustituye una secuencia cualquiera de caracteres&lt;/td&gt;&lt;td&gt;*&lt;/td&gt;&lt;td&gt;.*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Separador de extensión&lt;/td&gt;&lt;td&gt;.&lt;/td&gt;&lt;td&gt;\.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;Punto sin extensión final&lt;/td&gt;&lt;td&gt;*.&lt;/td&gt;&lt;td&gt;[^\.]+\.?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Además, si se trata de una regex en un entorno POSIX, es probable que para que la coincidencia de la cadena buscada sea haga desde las posiciones indicadas de cada comodín comenzando por el primer carácter de la cadena (y no en cualquier lugar de la misma), haya que agregar el &lt;a href=&quot;https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular#El_acento_circunflejo_.22.5E.22&quot; target=&quot;_blank&quot;&gt;metacarácter &lt;b&gt;^&lt;/b&gt;&lt;/a&gt;&amp;nbsp;al comienzo de la expresión.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
De esta forma, la conversión entre wildcards y regex puede verse ilustrada en los siguientes ejemplos:&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table id=&quot;customers&quot;&gt;
&lt;thead style=&quot;background: rgb(224, 224, 255);&quot;&gt;
&lt;tr&gt;
&lt;td&gt;Descripción&lt;/td&gt;&lt;td&gt;Wildcards&lt;/td&gt;&lt;td&gt;Regex&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cualquier archivo con cualquier extensión&lt;/td&gt;&lt;td&gt;*.*&lt;/td&gt;&lt;td&gt;^.*\..*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Todos los archivos que comiencen por A&lt;/td&gt;&lt;td&gt;A*.*&lt;/td&gt;&lt;td&gt;^A.*\..*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Todos los archivos con extensión &lt;i&gt;jpg&amp;nbsp;&lt;/i&gt;que comiencen por &lt;i&gt;pic&lt;/i&gt; y dos caracteres más&lt;/td&gt;&lt;td&gt;pic??.jpg&lt;/td&gt;&lt;td&gt;^pic..\.jpg&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td&gt;Archivos que comiencen por &quot;abc&quot; y NO tengan extensión&lt;/td&gt;&lt;td&gt;abc*.&lt;/td&gt;&lt;td&gt;abc*[^\.]+\.?&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;h3&gt;
El código&amp;nbsp;&lt;/h3&gt;
&lt;div&gt;&lt;script async=&quot;&quot; src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot; data-ad-client=&quot;ca-pub-6913768317745308&quot; data-ad-format=&quot;fluid&quot; data-ad-layout=&quot;in-article&quot; data-ad-slot=&quot;5214885235&quot; style=&quot;display: block; text-align: center;&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para transformar los comodines en expresiones regulares hemos visto que basta cualquier tipo de sustitución simple, incluso la que hace un editor de texto con sus macros correspondientes. El lenguaje &lt;a href=&quot;https://es.wikipedia.org/wiki/Perl&quot; target=&quot;_blank&quot;&gt;Pe&lt;span id=&quot;goog_115495203&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_115495204&quot;&gt;&lt;/span&gt;rl&lt;/a&gt; tiene, como parte de su propia sintaxis, el manejo de expresiones regulares. También existen en Java, Javascript, c#, PHP y casi cualquiera que se precie.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
No obstante, en mi ejemplo yo usaré &lt;a href=&quot;https://es.wikipedia.org/wiki/ANSI_C&quot; target=&quot;_blank&quot;&gt;lenguaje C ansi&lt;/a&gt; por ser un estándar y porque además era el lenguaje usado en mi proyecto.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;!--HTML generated using hilite.me--&gt;&lt;br /&gt;
&lt;div style=&quot;background: rgb(238, 238, 221); border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #cccccc; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;#include&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;lt;regex.h&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;/*&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;*Esta función recorre el patrón basado en comodines y los sustituye por sus equivalencias regex&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #d4d4d4;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #dcdcaa;&quot;&gt;wildcard_to_regex&lt;/span&gt;(&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #d4d4d4;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;pattern&lt;/span&gt;) {&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt; (pattern) {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt; len &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #dcdcaa;&quot;&gt;strlen&lt;/span&gt;(pattern);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #d4d4d4;&quot;&gt;*&lt;/span&gt; regstr &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #dcdcaa;&quot;&gt;malloc&lt;/span&gt;(&lt;span style=&quot;color: #b5cea8;&quot;&gt;200&lt;/span&gt;);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt; r &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;^&#39;&lt;/span&gt;;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt; i &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;; i &lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;lt;&lt;/span&gt; len; i&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;) {&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;switch&lt;/span&gt; ( &lt;span style=&quot;color: #d4d4d4;&quot;&gt;*&lt;/span&gt; (pattern &lt;span style=&quot;color: #d4d4d4;&quot;&gt;+&lt;/span&gt; i)) {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;*&#39;&lt;/span&gt;:&lt;span style=&quot;color: #6a9955;&quot;&gt; //* &amp;nbsp;[^\.]+\.?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt; ( &lt;span style=&quot;color: #d4d4d4;&quot;&gt;*&lt;/span&gt; (pattern &lt;span style=&quot;color: #d4d4d4;&quot;&gt;+&lt;/span&gt; i &lt;span style=&quot;color: #d4d4d4;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;) &lt;span style=&quot;color: #d4d4d4;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;.&#39;&lt;/span&gt; &lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; (i &lt;span style=&quot;color: #d4d4d4;&quot;&gt;==&lt;/span&gt; (len &lt;span style=&quot;color: #d4d4d4;&quot;&gt;-&lt;/span&gt; &lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;))) {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;[&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;^&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #d7ba7d;&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;.&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;]&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;+&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #d7ba7d;&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;.&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;?&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;.&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;*&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;break&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;?&#39;&lt;/span&gt;:&lt;span style=&quot;color: #6a9955;&quot;&gt; //[^\.]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;[&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;^&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #d7ba7d;&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;.&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;]&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;break&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;.&#39;&lt;/span&gt;:&lt;span style=&quot;color: #6a9955;&quot;&gt; //\.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #d7ba7d;&quot;&gt;\\&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;.&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;break&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;default&lt;/span&gt;:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d4d4d4;&quot;&gt;*&lt;/span&gt; (pattern &lt;span style=&quot;color: #d4d4d4;&quot;&gt;+&lt;/span&gt; i);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r&lt;span style=&quot;color: #d4d4d4;&quot;&gt;++&lt;/span&gt;] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;$&#39;&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;regstr&lt;/span&gt;[r] &lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #d7ba7d;&quot;&gt;\0&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&#39;&lt;/span&gt;;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt; regstr;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; } &lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt; {&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #569cd6;&quot;&gt;NULL&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;br /&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;/*&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;*En esta función se comprueba si el nombre de archivo o cadena coincide con la expresión regex dada&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;bool&lt;/span&gt; &lt;span style=&quot;color: #dcdcaa;&quot;&gt;pattern_matches&lt;/span&gt;(&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #d4d4d4;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;filename&lt;/span&gt;, &lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #d4d4d4;&quot;&gt;*&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;mask&lt;/span&gt;) {&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #4ec9b0;&quot;&gt;regex_t&lt;/span&gt; regex;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #dcdcaa;&quot;&gt;regcomp&lt;/span&gt;( &lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;amp;&lt;/span&gt; regex, &lt;span style=&quot;color: #dcdcaa;&quot;&gt;wildcard_to_regex&lt;/span&gt;(mask), REG_ICASE);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color: #d4d4d4;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;regexec&lt;/span&gt;( &lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;amp;&lt;/span&gt; regex, filename, &lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;, &lt;span style=&quot;color: #569cd6;&quot;&gt;NULL&lt;/span&gt;, &lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;)) {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #569cd6;&quot;&gt;true&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; } &lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #569cd6;&quot;&gt;false&lt;/span&gt;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span style=&quot;text-align: justify;&quot;&gt;Ambas funciones se utilizarían para construir la expresión regular a partir de un patrón de búsqueda por comodines y para comprobar si una cadena dada (por ejemplo, un nombre de archivo) concuerda con dicha expresión regular:&lt;/span&gt;&lt;br /&gt;
&lt;!--HTML generated using hilite.me--&gt;&lt;/div&gt;
&lt;div style=&quot;background: rgb(238, 238, 221); border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;div style=&quot;background-color: #1f1f1f; color: #cccccc; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;void&lt;/span&gt; &lt;span style=&quot;color: #dcdcaa;&quot;&gt;main&lt;/span&gt; (&lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;argc&lt;/span&gt;, &lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt; &lt;span style=&quot;color: #d4d4d4;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;argv&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;[]&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt; (&lt;span style=&quot;color: #dcdcaa;&quot;&gt;pattern_matches&lt;/span&gt;(&lt;span style=&quot;color: #9cdcfe;&quot;&gt;argv&lt;/span&gt;[&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;], &lt;span style=&quot;color: #dcdcaa;&quot;&gt;wilcard_to_regex&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;test*.*&quot;&lt;/span&gt;) )&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #6a9955;&quot;&gt;// el archivo especificado en la línea de comandos&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #6a9955;&quot;&gt;// concuerda con la máscara &quot;test*.*&quot;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; } &lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt; {&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #6a9955;&quot;&gt;// el archivo no concuerda&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;br /&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/5983736460816337832/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2016/02/algoritmo-para-busquedas-con-comodines.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5983736460816337832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5983736460816337832'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2016/02/algoritmo-para-busquedas-con-comodines.html' title='Algoritmo para búsquedas con comodines (wildcards)'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-1055575012971869593</id><published>2015-11-14T12:11:00.004+01:00</published><updated>2019-09-18T16:03:08.233+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="archivo"/><category scheme="http://www.blogger.com/atom/ns#" term="DLL"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="Web"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="WWW"/><title type='text'>Ejecución de aplicaciones antiguas en Windows 7 y 10</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
En un acto de torpeza premeditada de Microsoft (otro más), las nuevas versiones de Windows, desde la 7 en adelante, no soportan correctamente ciertas aplicaciones antiguas. Algo que ya sabíamos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sin embargo, muchas de ellas no han dejado de funcionar debido a las notorias diferencias de arquitectura entre Windows 98/NT/2000/XP, sino simplemente a que ellos lo han decidido así, eliminando bibliotecas esenciales como la MSVBVM50.DLL, la MSVBVM6.DLL, etc. que no son más que los run-times necesarios para aplicaciones escritas en Visual Basic anterior a la era .NET.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Aunque parezca increíble, existen comercialmente muchas aplicaciones escritas en dicho lenguaje y aún más en compañías que hacen desarrollo de software para uso interno.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para colmo, la descarga en Internet de dichos archivos se ha vuelto cada vez más difícil y arriesgada; Microsoft &lt;a href=&quot;https://support.microsoft.com/en-us/gp/vbruntime&quot; target=&quot;_blank&quot;&gt;ha eliminado dicho contenido online&lt;/a&gt;&amp;nbsp;(si probáis el enlace de la MSVBVM50 os llevará a una página en blanco) y el resto de opciones son descargas de webs que intentan instalarte algún sypware o algún otro software comercial haciéndote creer que estás descargando lo que buscabas.&lt;/div&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;
Sin embargo...&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Hay opciones. Casi siempre las hay.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Os presento una de mis WEBs de cabecera que probablemente uso a diario: &lt;a href=&quot;http://archive.org/web/&quot; target=&quot;_blank&quot;&gt;THE WAYBACK MACHINE&lt;/a&gt;, actualmente integrada en el ambicioso proyecto &lt;a href=&quot;http://www.archive.org/&quot;&gt;www.archive.org&lt;/a&gt;, que pretende archivar toda la información que existe en el mundo, es un web site que hace &lt;i&gt;snapshots&lt;/i&gt;&amp;nbsp;de prácticamente cualquier web que haya existido en el mundo de manera pública.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Esto significa que un enlace que actualmente no existe, o cuya información contenida ya no es la que buscábamos, gracias a esta maravilla puede ser accedida en fechas anteriores que pueden remontarse a más de una década. De esa manera, podemos retroceder en la máquina del tiempo y así rescatar nuestras famosas bibliotecas DLL de las que Microsoft ha decidido (absurda e injustamente) privarnos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como ejemplo, intentemos rescatar el instalador de las bibliotecas MSVBVM5. Según la página mostrada arriba, el enlace a dicho instalador debería ser&amp;nbsp;&lt;a href=&quot;https://support.microsoft.com/kb/180071&quot;&gt;https://support.microsoft.com/kb/180071&lt;/a&gt; que si lo seguimos veremos que ya no está disponible.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbqsxlroDk91W64V8GNz7V8xp9eeGeEENnGh1WAkAOhgPnDYjxp4UdrYZHW90DRO6epAifmNkUEpJJZgvkJXacoCvFR6AATcUGnk0ttJunyvAyu8Npohj68A0WgZsufJtfUEC6krJGosbY/s1600/waybackmachine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;425&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbqsxlroDk91W64V8GNz7V8xp9eeGeEENnGh1WAkAOhgPnDYjxp4UdrYZHW90DRO6epAifmNkUEpJJZgvkJXacoCvFR6AATcUGnk0ttJunyvAyu8Npohj68A0WgZsufJtfUEC6krJGosbY/s640/waybackmachine.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pulsamos en Browse History y nos llevará al calendario de &quot;fotos&quot;:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU_Ui0s0Y__wn4UemujKL1yvKINGO0bYReyyYGzrti1smo2njUcJbYpnMnP87-UP7rk3QIbmk_fLrQzFs5aRyR3cAWj13N-faXzgAUVWyyAMJjpBr2XY-fz1IHYsE-d2oVy7A1Im48ndQO/s1600/waybackmachine2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;290&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU_Ui0s0Y__wn4UemujKL1yvKINGO0bYReyyYGzrti1smo2njUcJbYpnMnP87-UP7rk3QIbmk_fLrQzFs5aRyR3cAWj13N-faXzgAUVWyyAMJjpBr2XY-fz1IHYsE-d2oVy7A1Im48ndQO/s640/waybackmachine2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pues bien, ahora ya podemos pinchar en la fecha exacta a la que queremos retroceder. Sin embargo, hay que tener en cuenta una consideración: dado que la página con el contenido &lt;b&gt;existe&lt;/b&gt;, esta aparecerá hasta la fecha de hoy. Sin embargo, el contenido de la misma no es el esperado pues sólo sale el cartel de &lt;i&gt;no disponible&lt;/i&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Eso significa que en gran parte del histórico grabado en la Wayback Machine también faltará el archivo que buscamos. Para evitar este problema, lo mejor es ir siempre a la versión más antigua que haya guardada. En este caso yo he usado el snapshot de &lt;b&gt;2004&lt;/b&gt;&amp;nbsp;y &lt;b&gt;4 de diciembre:&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi72JgBZDOQzZv0FYjiCgnpup1brAgezxI4lLhZkVXmL9rb0AcGmka5Xf5yDA4X9JYAvNXlCYpBejexypmcuBcYSC9skd975i4-90VpJZuAaE1vM5wz4f0Es54HB8uBMr1jVXWMLjS_03IN/s1600/waybackmachine3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;287&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi72JgBZDOQzZv0FYjiCgnpup1brAgezxI4lLhZkVXmL9rb0AcGmka5Xf5yDA4X9JYAvNXlCYpBejexypmcuBcYSC9skd975i4-90VpJZuAaE1vM5wz4f0Es54HB8uBMr1jVXWMLjS_03IN/s320/waybackmachine3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Y...&amp;nbsp;&lt;i&gt;et voilà&lt;/i&gt;! (También vale la versión de ¡bingo!):&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLRvsZ6lqBe5BgithOqJnO-EQ1SG0FA4lAYFdPsIWaVI9rzsoSBCkmiLltFv_WfmS28RqVK3IUBvcWNBib2EqntJ8Um3-k7hkPW3V17FvgN4tfShGez7zx8jKVKCSCRMXxwiiKVHTK1x8t/s1600/waybackmachine4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;347&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLRvsZ6lqBe5BgithOqJnO-EQ1SG0FA4lAYFdPsIWaVI9rzsoSBCkmiLltFv_WfmS28RqVK3IUBvcWNBib2EqntJ8Um3-k7hkPW3V17FvgN4tfShGez7zx8jKVKCSCRMXxwiiKVHTK1x8t/s640/waybackmachine4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Además, tal y como vemos en la barra superior, podemos &lt;i&gt;navegar&lt;/i&gt;&amp;nbsp;entre distintas versiones de la página.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Os recomiendo también el uso de esta genial herramienta cuando alguna compañía os ha cambiado las condiciones de uso online y os quieren intentar perjudicar alegando un contrato &lt;b&gt;que vosotros no habéis aceptado&lt;/b&gt;. A mí me pasó una vez con una conocida compañía de teléfonos que me cobró por un compromiso de permanencia que no me correspondía y alegaron unas condiciones que yo supuestamente había aceptado online. Pero esas condiciones no se parecían a las que yo leí. Así que usé esta &lt;i&gt;máquina del tiempo&lt;/i&gt;&amp;nbsp;para demostrar que ellos habían cambiado el contenido del contrato que yo acepté.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Estoy seguro de que vosotros encontraréis muchos más usos útiles de esta herramienta.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por cierto, agrego al blog el enlace de la biblioteca de Microsoft que seguramente andabas buscando si llegaste a esta página.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.debugmachine.com/p/descargas.html&quot; target=&quot;_blank&quot;&gt;Página de DESCARGAS del blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/1055575012971869593/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2015/11/ejecucion-de-aplicaciones-antiguas-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/1055575012971869593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/1055575012971869593'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2015/11/ejecucion-de-aplicaciones-antiguas-en.html' title='Ejecución de aplicaciones antiguas en Windows 7 y 10'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbqsxlroDk91W64V8GNz7V8xp9eeGeEENnGh1WAkAOhgPnDYjxp4UdrYZHW90DRO6epAifmNkUEpJJZgvkJXacoCvFR6AATcUGnk0ttJunyvAyu8Npohj68A0WgZsufJtfUEC6krJGosbY/s72-c/waybackmachine.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-2553120606712121233</id><published>2015-11-11T10:51:00.000+01:00</published><updated>2019-09-18T16:03:29.888+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="DLL"/><category scheme="http://www.blogger.com/atom/ns#" term="error"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><category scheme="http://www.blogger.com/atom/ns#" term="windows server"/><title type='text'>X-Files y Poltergeists. Cuando Windows está maldito</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Hace poco me encontraba con uno de esos problemas de resolución aparentemente imposible en una máquina Windows Server 2008 de 64 bits.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En ocasiones, la información y soporte que Microsoft dan al respecto son tremendamente pobres y a veces incluso dicha información es confusa o inexacta.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Tal fue el asunto que me tuvo ocupado con la susodicha máquina hasta casi el borde de la desesperación. Sin pistas, sin ningún otro caso descrito similar en ningún foro, la cosa pintaba mal. Sería el típico caso en que la mayoría de administradores de sistemas habrían optado por reinstalar todo el sistema operativo. Pero en mi caso, eso no era una opción.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
De hecho, nunca me ha parecido una opción.

Reiniciar o reinstalar vendría a suponer, en la analogía de un médico, amputar una pierna porque no se esforzó lo suficiente en encontrar la causa que le provoca el dolor al paciente.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Así que vamos allá. La solución fue usar la fuerza bruta en un modo en el que se pueden solucionar otras muchas complicaciones en Windows.&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;Los síntomas&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Todo comenzó cuando el cliente se quejó de que parte de la aplicación web que corre en ese servidor se quedaba congelada. Pero ocurría sólo con determinadas funcionalidades, no con todo el website. La primera reacción del desarrollador de la aplicación fue descargar de la nube un backup para reinstalar todos los fuentes de la aplicación y ver si eso lo solucionaba.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Y así llegó el segundo susto: no conseguía descargar nada en Google Chrome. El Internet Explorer, directamente no se abría, arrojando un fabuloso error &lt;b&gt;0xc0000005&lt;/b&gt; (que no es otra cosa que un &lt;i&gt;Acceso denegado&lt;/i&gt;&amp;nbsp;de toda la vida); el propio Windows bloqueaba la descarga por &quot;razones de seguridad&quot;. Obviamente la reacción lógica fue ir al panel de control y buscar el icono de Internet Settings para comprobar si el nivel de seguridad estaba demasiado alto. Pero... ¡oh, sorpresa! No se abría tampoco dicha aplicación.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En este punto es cuando me llaman y me dicen que el servidor &quot;is dying quickly&quot; y probablemente se deba a una infección de un virus (el argumento del virus es muy socorrido cuando no se tiene ni idea de qué está sucediendo; pero no, casi nunca es un virus).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Con la ceja levantada me puse (previa migración de toda la aplicación a otro servidor en producción) a analizar el asunto. Fue cuando además, descubrí el susto definitivo: no funcionaba la consola de sistema (la aplicación MMC) por lo que no conseguía abrir ni el Visor de Sucesos, ni la lista de Servicios, ni las políticas de Firewall, ni... ¡ni nada! Al abrir la MMC me daba el error &lt;i&gt;Not enough storage is available to complete this operation. &amp;nbsp;Hummm....&lt;/i&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ni siquiera funcionaba el SFC /SCANNOW para restaurar archivos corrompidos; se detenía en el 74% dando también un error.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
¿Qué estaba pasando?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;
La investigación y la solución (desesperada) al problema&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pues teníamos muy poca cosa. Un error, aparentemente, de permisos en Internet Explorer, y un desolador mensaje de&amp;nbsp;&lt;i&gt;Not enough storage is available to complete this operation&lt;/i&gt;&amp;nbsp;al intentar abrir la consola MMC.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Dicho mensaje me mandó, obviamente, a comprobar el espacio en disco y memoria RAM, pese a que habían sido recientemente ampliados en la máquina virtual. Tal y como era de esperar, había espacio de sobra.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Todo lo que pude encontrar en Google hacía alusión a falta de espacio en disco, problemas al escribir archivos en %TEMP%, falta de RAM, etc. Sin embargo, ninguno de esos escenarios era parecido a este. Investigando sobre el error y mirando en el SDK de Windows, &lt;a href=&quot;http://www.unixwiz.net/techtips/not-enough-codes.html&quot; target=&quot;_blank&quot;&gt;vemos que dicho error &lt;/a&gt;internamente corresponde al errorcode 14,&amp;nbsp;&lt;i&gt;ERROR_OUTOFMEMORY&lt;/i&gt;, cuya descripción hace alusión &amp;nbsp;a falta de recursos &lt;i&gt;indirectos&lt;/i&gt;, (por ejemplo, falta de &lt;i&gt;handles&lt;/i&gt;&amp;nbsp;disponibles para el OS), es decir, que aunque lo parezca, &lt;b&gt;no se refiere a falta de espacio físico de ningún tipo&lt;/b&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El número de handles de cada proceso se puede ver en el Administrador de Tareas, agregando la columna correspondiente. Pero tampoco era ese el caso y todas los procesos se mostraban con normalidad.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
¿Qué &lt;i&gt;en-el-infierno&lt;/i&gt; estaba pasando?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Fue entonces cuando recordé aquel viejo problema de las DLL mal registradas que, si bien los síntomas globales eran distintos, tenían en común que no podía abrirse la consola MMC (aunque el error mostrado tampoco coincidiera).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.debugmachine.com/2010/02/errores-del-parser-xml-de-microsoft.html&quot; target=&quot;_blank&quot;&gt;Ya hablamos en su momento de ese problema&lt;/a&gt;, y de cómo solucionarlo registrando las bibliotecas MSXML3.DLL y MSXML6.DLL.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
¿Estaríamos ante ese viejo conocido? Rápidamente hice el consabido &lt;b&gt;regsvr32 MSXML3.DLL &lt;/b&gt;&amp;nbsp;y el &lt;b&gt;regsvr32 MSXML6.DLL&lt;/b&gt;&amp;nbsp;y....&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
¡Nada de nada!&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pero el problema tenía que ser muy similar. ¿Y si la DLL mal registrada era simplemente otra? ¿Tendría que probar a registrarlas una a una? Fue cuando se me ocurrió usar algo totalmente &lt;i&gt;old-school&lt;/i&gt;: decirle a la consola de texto que hiciese un regsvr32 a TODAS las DLL encontradas en los subdirectorios c:\windows\system32 y c:\windows\syswow64.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para ello sólo hay que abrir el intérprete de comandos (el famoso CMD.exe al que los usuarios de Windows están tristemente acostumbrados) y escribir la siguiente cosa:&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #ffe599; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;FOR /F %f IN (&#39;dir %windir%\system32\*dll /B&#39;) DO regsvr32 %f /s&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Así que probé y... ¡SÍ! Esta vez funcionó a la perfección.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El problema de esta solución es que no hemos podido averiguar cuál era la DLL díscola que provocó todo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sin embargo, la potencia de este método es que puede ser utilizado para muchos problemas típicos de Windows cuya solución no esté previamente documentada en otros lugares. Por tanto, cuando creáis que en vuestro Windows Server hay un &lt;a href=&quot;https://es.wikipedia.org/wiki/Poltergeist&quot; target=&quot;_blank&quot;&gt;polstergeist&lt;/a&gt;, o se trata de un &lt;a href=&quot;https://en.wikipedia.org/wiki/X-files_unit&quot; target=&quot;_blank&quot;&gt;X-File&lt;/a&gt;... probad este sistema.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Puede que sea la solución.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/2553120606712121233/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2015/11/x-files-y-poltergeists-cuando-windows.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/2553120606712121233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/2553120606712121233'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2015/11/x-files-y-poltergeists-cuando-windows.html' title='X-Files y Poltergeists. Cuando Windows está maldito'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-3400616506483111187</id><published>2014-07-17T13:49:00.001+02:00</published><updated>2019-09-18T16:03:48.143+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple"/><category scheme="http://www.blogger.com/atom/ns#" term="crossplatform"/><category scheme="http://www.blogger.com/atom/ns#" term="Delphi"/><category scheme="http://www.blogger.com/atom/ns#" term="GDB"/><category scheme="http://www.blogger.com/atom/ns#" term="GNU"/><category scheme="http://www.blogger.com/atom/ns#" term="Lazarus"/><category scheme="http://www.blogger.com/atom/ns#" term="Mac"/><category scheme="http://www.blogger.com/atom/ns#" term="OS X"/><category scheme="http://www.blogger.com/atom/ns#" term="Xcode"/><title type='text'>Problema firmando el GDB (The GNU Project Debugger) en Mac OS X</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Buenas tardes,&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
andábame yo inmerso en un fantástico proyecto cross-platform desarrollado en &lt;a href=&quot;http://www.lazarus.freepascal.org/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Lazarus&lt;/a&gt; (el famoso clon del mítico &lt;a href=&quot;http://www.embarcadero.com/products/delphi&quot; target=&quot;_blank&quot;&gt;Delphi&lt;/a&gt;, que ya por fin funciona y es usable) cuando se me ocurrió probar el tema de las múltiples plataformas instalando el IDE en el Mac.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La instalación de Lazarus &amp;nbsp;es sencilla en principio (como cualquier otra aplicación de Mac). El problema es que hace falta tener instaladas las &quot;command-line tools&quot; y parece ser que en &lt;a href=&quot;https://developer.apple.com/xcode/&quot; target=&quot;_blank&quot;&gt;Xcode 5.0&lt;/a&gt; no es tan trivial como parece.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pues bien, el principal problema es que hay que instalar el debugger de &lt;a href=&quot;https://www.gnu.org/&quot; target=&quot;_blank&quot;&gt;GNU&lt;/a&gt; (es decir, la herramienta &lt;b&gt;&lt;a href=&quot;http://www.gnu.org/software/gdb/&quot; target=&quot;_blank&quot;&gt;gdb&lt;/a&gt;)&lt;/b&gt;&amp;nbsp;y hay que firmarla con un certificado.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Siguiendo las guías oficiales me encontré con algunos escollos que no estaban bien aclarados, y que una vez resueltos, comparto con todo el mundo por si os ocurre también. Las guías en cuestión son:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://wiki.lazarus.freepascal.org/Installing_Lazarus_on_MacOS_X#Xcode_5.0.2B_compatibility_.28Mac_OS_X_10.8_and_10.9.29&quot;&gt;http://wiki.lazarus.freepascal.org/Installing_Lazarus_on_MacOS_X#Xcode_5.0.2B_compatibility_.28Mac_OS_X_10.8_and_10.9.29&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
y&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://wiki.lazarus.freepascal.org/GDB_on_OS_X_Mavericks&quot;&gt;http://wiki.lazarus.freepascal.org/GDB_on_OS_X_Mavericks&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Podéis seguir sin problema paso a paso ambos manuales. Pero al llegar a la parte de cómo crear un certificado y cómo firmar el ejecutable del debugger, hay que tener en cuenta dos detalles que no se dicen:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para poder crear el certificado con el asistente siguiendo los mismos pasos, antes tenéis que desbloquear la opción de crear certificados de tipo &lt;b&gt;system&lt;/b&gt;. Si no, simplemente no os saldrán las opciones correctas en el asistente (sólo unas parecidas) y estaréis perdidos al intentar seguir los pasos del manual. Para ello tenéis que desbloquear la herramienta de acceso a las claves y certificados:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_KRZbGlUp1auPa7shDH5iQfSHranMB324bqAd3CI6pXckc01T-ziCQP_FtXyaJkqGFWhk_C9IHolULGrjlTmhcOtteCp1cvAtpHIq1ZkdOTHpSQoqE4FiVQASfS4E0iciLNAXqF1NgTgf/s1600/Screen+Shot+2014-07-17+at+13.33.09.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_KRZbGlUp1auPa7shDH5iQfSHranMB324bqAd3CI6pXckc01T-ziCQP_FtXyaJkqGFWhk_C9IHolULGrjlTmhcOtteCp1cvAtpHIq1ZkdOTHpSQoqE4FiVQASfS4E0iciLNAXqF1NgTgf/s1600/Screen+Shot+2014-07-17+at+13.33.09.png&quot; height=&quot;371&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;

&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez realizado ese paso ya podéis usar el asistente para la creación del certificado exactamente en los mismos términos que explica la guía.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Si todo ha salido bien, el siguiente paso es firmar el ejecutable&amp;nbsp;&lt;b&gt;gdb &lt;/b&gt;siguiendo los pasos de la guía. Esos pasos son correctos y hay que seguirlos. Sin embargo, no se nos avisa de que para que Lazarus reconozca al ejecutable del debugger como un programa firmado, hay que, o bien reiniciar el sistema (innecesario y exagerado) o bien escribir el siguiente comando en la terminal (como root):&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;killall taskgated&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Tras esto, volved a abrir Lazarus y ya debería dejaros compilar y debuguear sin problemas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/3400616506483111187/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2014/07/problema-firmando-el-gdb-gnu-project.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3400616506483111187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3400616506483111187'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2014/07/problema-firmando-el-gdb-gnu-project.html' title='Problema firmando el GDB (The GNU Project Debugger) en Mac OS X'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_KRZbGlUp1auPa7shDH5iQfSHranMB324bqAd3CI6pXckc01T-ziCQP_FtXyaJkqGFWhk_C9IHolULGrjlTmhcOtteCp1cvAtpHIq1ZkdOTHpSQoqE4FiVQASfS4E0iciLNAXqF1NgTgf/s72-c/Screen+Shot+2014-07-17+at+13.33.09.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-1716438554285718067</id><published>2013-03-14T18:48:00.000+01:00</published><updated>2019-09-18T16:04:17.813+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Active Directory"/><category scheme="http://www.blogger.com/atom/ns#" term="appliance"/><category scheme="http://www.blogger.com/atom/ns#" term="free"/><category scheme="http://www.blogger.com/atom/ns#" term="FreeBSD"/><category scheme="http://www.blogger.com/atom/ns#" term="instalación"/><category scheme="http://www.blogger.com/atom/ns#" term="proxy"/><category scheme="http://www.blogger.com/atom/ns#" term="replacement"/><category scheme="http://www.blogger.com/atom/ns#" term="router"/><category scheme="http://www.blogger.com/atom/ns#" term="routing"/><category scheme="http://www.blogger.com/atom/ns#" term="Squid"/><category scheme="http://www.blogger.com/atom/ns#" term="virtualización"/><title type='text'>Creación de un Virtual Appliance para control de Internet con VMware (parte 4)</title><content type='html'>&lt;a href=&quot;http://www.debugmachine.com/2013/02/creacion-de-un-virtual-appliance-para_24.html&quot;&gt;&amp;lt;&amp;lt; Artículo anterior&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Continuamos esta serie de artículos sobre el &quot;appliance virtual&quot; basado en Squid. Ahora ha llegado el turno de la integración con redes y dominios basados en Windows y en Active Directory. El primer paso a seguir es instalar SAMBA en nuestro FreeBSD.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como en otras ocasiones ejecutamos &lt;b&gt;sysinstall&lt;/b&gt; y buscamos la instalación del paquete adecuado:&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;Configure → Packages → net → samba34-3.4.9_1&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
(Obviamente el número de versión del paquete dependerá del resto de versiones de cada instalación). &lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Necesitamos el siguiente cambio de permisos al archivo de configuración &lt;b&gt;smb.conf &lt;/b&gt;para garantizar que el usuario &lt;i&gt;squid&lt;b&gt; &lt;/b&gt;&lt;/i&gt;(usado para correr el servicio) es capaz de abrir la configuración de Samba:&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;chown root:squid /usr/local/etc/smb.conf&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;chmod 750 /usr/local/etc/smb.conf&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Editamos el archivo &lt;b&gt;/usr/local/etc/smb.conf&lt;/b&gt; y cambiamos o añadimos las siguientes líneas (cambiad los nombres de servidores, dominio, etc. por el vuestro propio):&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #002240; color: white;&quot;&gt;workgroup &lt;span style=&quot;color: #ff9d00;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff628c;&quot;&gt;DEBUGMACHINE&lt;/span&gt;
security &lt;span style=&quot;color: #ff9d00;&quot;&gt;=&lt;/span&gt; domain
load printers &lt;span style=&quot;color: #ff9d00;&quot;&gt;=&lt;/span&gt; no
password server &lt;span style=&quot;color: #ff9d00;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff628c;&quot;&gt;DC&lt;/span&gt;&lt;span style=&quot;color: #ff9d00;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ff628c;&quot;&gt;01&lt;/span&gt;
passdb backend &lt;span style=&quot;color: #ff9d00;&quot;&gt;=&lt;/span&gt; tdbsam
interfaces &lt;span style=&quot;color: #ff9d00;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff628c;&quot;&gt;192.168&lt;/span&gt;&lt;span style=&quot;color: #ff628c;&quot;&gt;.3&lt;/span&gt;&lt;span style=&quot;color: #ff628c;&quot;&gt;.254&lt;/span&gt;&lt;span style=&quot;color: #ff9d00;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #ff628c;&quot;&gt;24&lt;/span&gt;
winbind uid &lt;span style=&quot;color: #ff9d00;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff628c;&quot;&gt;10000&lt;/span&gt;&lt;span style=&quot;color: #ff9d00;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ff628c;&quot;&gt;20000&lt;/span&gt;
winbind gid &lt;span style=&quot;color: #ff9d00;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ff628c;&quot;&gt;10000&lt;/span&gt;&lt;span style=&quot;color: #ff9d00;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #ff628c;&quot;&gt;20000&lt;/span&gt;
winbind use default domain &lt;span style=&quot;color: #ff9d00;&quot;&gt;=&lt;/span&gt; yes&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Antes del siguiente paso, tenemos que asegurarnos de que el Appliance es capaz de resolver el nombre de host del controlador de dominio, bien mediante configuración del cliente DNS, o bien mediante el archivo &lt;b&gt;/etc/hosts&lt;/b&gt;. Igualmente tenemos que dar al FreeBSD el nombre de host definitivo que queremos que tenga, por ejemplo, &lt;i&gt;&lt;b&gt;private-gw&lt;/b&gt;&lt;/i&gt;. Para ello editamos el archivo &lt;b&gt;/etc/rc.conf&lt;/b&gt; y agregamos la línea &lt;b&gt;hostname=&quot;private-gw.debugmachine.com&quot;&lt;/b&gt; (no olvidéis como siempre especificar vuestro propio nombre de dominio).&lt;br /&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;
También es necesario que el reloj esté sincronizado con el del controlador de dominio. Para ello tenemos que asegurarnos de que el demonio &lt;b&gt;ntpd&lt;/b&gt; está instalado en el FreeBSD, y añadir al &lt;b&gt;/etc/rc.conf&lt;/b&gt; las siguientes líneas:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ntpdate_enable=&quot;&lt;b&gt;yes&lt;/b&gt;&quot;&lt;br /&gt;
ntpdate_flags=&quot;&lt;b&gt;dc-01.debugmachine.com&lt;/b&gt;&quot;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Se recomienda reiniciar el equipo tras los pasos anteriores para asegurarse que todo está bien actualizado y no quedó ningún servicio por levantar.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Y ahora sí, unimos el equipo al dominio con nuestro administrador del dominio y su password:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;net join -U administrador%password&lt;/b&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Iniciamos el servicio &lt;b&gt;winbindd&lt;/b&gt;. Es necesario para poder crear &lt;i&gt;tuberías&lt;/i&gt; o &lt;i&gt;pipes&lt;/i&gt; entre los servicios de autenticación y las diferentes aplicaciones (en este caso Squid).&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;/usr/local/sbin/winbindd&lt;/b&gt;&lt;/blockquote&gt;
&lt;/div&gt;
Si queremos garantizar el arranque de los servicios en cada reinicio de la máquina, tenemos que activarlos en el &lt;b&gt;/etc/rc.conf&lt;/b&gt; al igual que hemos venido haciendo con otros:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;&lt;span style=&quot;background-color: #f9f9f9; color: black; display: inline; float: none; font-family: monospace; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: left; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px;&quot;&gt;winbindd_enable=yes&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Cambiamos los permisos del siguiente archivo para asegurarnos que el usuario &lt;i&gt;squid&lt;/i&gt; nuevamente puede acceder a él:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b&gt;chown root:squid /var/db/samba34/winbindd_privileged&lt;br /&gt;chmod 750 /var/db/samba34/winbindd_privileged&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Para ver si hasta aquí todo funciona correctamente, podemos probar a autenticar un usuario cualquiera de nuestro dominio. Si todo sale bien deberíamos tener una respuesta similar a esta:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background: #042029; color: #839496;&quot;&gt;root@private&lt;span style=&quot;color: #859900;&quot;&gt;-&lt;/span&gt;gw&lt;span style=&quot;color: #859900;&quot;&gt;:/&lt;/span&gt;# wbinfo &lt;span style=&quot;color: #859900;&quot;&gt;-&lt;/span&gt;a debugmachine&lt;span style=&quot;color: #859900;&quot;&gt;\\&lt;/span&gt;administrador&lt;span style=&quot;color: #859900;&quot;&gt;%&lt;/span&gt;password
plaintext password authentication &lt;span style=&quot;color: #f1c232;&quot;&gt;succeeded&lt;/span&gt;
challenge&lt;span style=&quot;color: #859900;&quot;&gt;/&lt;/span&gt;response password authentication &lt;span style=&quot;color: #f1c232;&quot;&gt;succeeded&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Ahora nuestro appliance ya es capaz, mediante Samba/Winbind, de hacer comprobaciones de usuario y password&amp;nbsp; para usuarios de nuestro dominio.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
¿Qué es lo siguiente?&lt;/h4&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ahora toca configurar nuestro Squid para que se haga cargo de todo esto. Para ello vamos a añadir las siguientes líneas al archivo &lt;b&gt;/usr/local/etc/squid/squid.conf&lt;/b&gt; para introducir autenticadores de tipo &quot;basic&quot; y &quot;ntlm&quot;. Pondremos 15 procesos &quot;hijo&quot; por defecto de cada tipo de autenticador, suficientes para una compañía de tamaño medio y sin llegar a saturar los recursos de la máquina:&lt;/div&gt;
&lt;pre style=&quot;background: #002240; color: #d1d1d1; font-size: small;&quot;&gt;auth_param ntlm program &lt;span style=&quot;color: #d2cd86;&quot;&gt;/&lt;/span&gt;usr&lt;span style=&quot;color: #d2cd86;&quot;&gt;/&lt;/span&gt;local&lt;span style=&quot;color: #d2cd86;&quot;&gt;/&lt;/span&gt;bin&lt;span style=&quot;color: #d2cd86;&quot;&gt;/&lt;/span&gt;ntlm_auth &lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;helper&lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;protocol&lt;span style=&quot;color: #d2cd86;&quot;&gt;=&lt;/span&gt;squid&lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #009f00;&quot;&gt;2.5&lt;/span&gt;&lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;ntlmssp
auth_param ntlm children &lt;span style=&quot;color: #008c00;&quot;&gt;15&lt;/span&gt;

auth_param basic program &lt;span style=&quot;color: #d2cd86;&quot;&gt;/&lt;/span&gt;usr&lt;span style=&quot;color: #d2cd86;&quot;&gt;/&lt;/span&gt;local&lt;span style=&quot;color: #d2cd86;&quot;&gt;/&lt;/span&gt;bin&lt;span style=&quot;color: #d2cd86;&quot;&gt;/&lt;/span&gt;ntlm_auth &lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;helper&lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;protocol&lt;span style=&quot;color: #d2cd86;&quot;&gt;=&lt;/span&gt;squid&lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #009f00;&quot;&gt;2.5&lt;/span&gt;&lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;basic
auth_param basic children &lt;span style=&quot;color: #008c00;&quot;&gt;15&lt;/span&gt;

auth_param basic realm Squid proxy&lt;span style=&quot;color: #d2cd86;&quot;&gt;-&lt;/span&gt;caching web server
auth_param basic credentialsttl &lt;span style=&quot;color: #008c00;&quot;&gt;2&lt;/span&gt; hours
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Squid permite crear ACLs o listas de acceso que sirven para controlar detalladamente los requisitos de uso del proxy. Dichas acls se escriben en el archivo &lt;b&gt;squid.conf&lt;/b&gt; y se tienen en cuenta por &lt;u&gt;el orden en que están escritas&lt;/u&gt;, teniendo siempre preferencia las más estrictas.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por defecto, Squid prohíbe el acceso a todos los usuarios salvo los que cumplan algún requisito (por ejemplo, pertenecer a una subred determinada). Para ello utiliza una línea como la siguiente:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;http_access deny all&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como podéis imaginar, todos los cambios y configuraciones que propondré a continuación deben estar &lt;b&gt;antes&lt;/b&gt; de la línea mencionada o si no serán ignorados al tener prioridad la más restrictiva.&lt;/div&gt;
&lt;br /&gt;
&lt;h4&gt;
Diseñando una política de acceso&lt;/h4&gt;
&lt;br /&gt;
Antes de continuar con la configuración del &lt;b&gt;squid.conf&lt;/b&gt;, es necesario tener las ideas claras de cómo será la política a implementar. Yo voy a usar una bastante simple para ilustrarlo a modo de ejemplo, pero por supuesto podría complicarse tanto como requieran nuestras necesidades (la flexibilidad de Squid es infinita).&lt;br /&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;
En nuestra política se tienen que cumplir los siguientes requisitos:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Para poder usar el proxy, es obligatorio estar autenticado (por NTLM o facilitando unas credenciales al iniciar la sesión).&lt;/li&gt;
&lt;li&gt;Habrá una serie de páginas web que no necesitarán autenticación previa 
(por ejemplo, actualizaciones de antivirus, Windows Update, etc.) &lt;/li&gt;
&lt;li&gt;Habrá una serie de páginas cuya visita estará totalmente prohibida (para cualquier usuario).&lt;/li&gt;
&lt;li&gt;Existirá un grupo en Active Directory llamado &quot;InternetRestringido&quot; cuyos miembros tendrán prohibido el acceso a determinadas webs (por ejemplo, http://www.twitter.com).&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para empezar vamos a crear varios archivos de texto donde se definan las URLs prohibidas, permitidas, etc. Deben definirse mediante &lt;a href=&quot;http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular&quot;&gt;expresiones regulares&lt;/a&gt;, una en cada línea.&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;/usr/local/etc/squid/deny.acl&lt;/i&gt; - Aquí escribiremos las expresiones regulares que coincidan con aquellas URLs que deseamos que sean restringidas a un determinado grupo de usuarios.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;/usr/local/etc/squid/denyall.acl&lt;/i&gt; - Aquí irán las expresiones que definan a las URLs que queremos prohibir de manera global, para todo el mundo.&lt;/li&gt;
&lt;li&gt;&lt;i&gt;/usr/local/etc/squid/noauth.acl&lt;/i&gt; - En este archivo definiremos aquellas URLs para las cuáles Squid &lt;b&gt;no debe exigir autenticación&lt;/b&gt;, ideal para procesos automáticos, actualizaciones de software, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Un ejemplo de expresiones regulares que sirvan para identificar el dominio &lt;i&gt;facebook.com&lt;/i&gt; (y de paso &lt;i&gt;facebook.es&lt;/i&gt;, &lt;i&gt;facebook.it&lt;/i&gt;, &lt;i&gt;facebook.*....&lt;/i&gt;) así como &lt;i&gt;twitter.com&lt;/i&gt; podría ser:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;facebook\.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;twitter\.com&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A continuación os copio y pego el trozo de &lt;b&gt;/usr/local/etc/squid/squid.conf&lt;/b&gt; que tendremos que añadir con los pertinentes comentarios que explicando cada directiva de la política. Recordad que debe ir siempre antes del &lt;i&gt;http_access deny all&lt;b&gt;.&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: #002240; color: #a0b0c0; font-size: small; padding: 10px 10px 10px 10px;&quot;&gt;#    En primer lugar definimos la &quot;acl&quot; de aquellas URLs que no
#    necesitan autenticarse previamente, y seguidamente la directiva
#    que permita el acceso a dicha acl
&lt;span style=&quot;color: white;&quot;&gt;acl &lt;span style=&quot;color: #ffe599;&quot;&gt;NoAuthNeeded&lt;/span&gt; url_regex &lt;span style=&quot;color: #ea9999;&quot;&gt;&quot;/usr/local/etc/squid/noauth.acl&quot;&lt;/span&gt;
http_access allow &lt;span style=&quot;color: #ffe599;&quot;&gt;NoAuthNeeded&lt;/span&gt;&lt;/span&gt;

#    definimos un tipo de ACL llamada &quot;domainGroup&quot; que nos permita
#    comprobar la pertenencia a grupos de Active Directory
&lt;span style=&quot;color: white;&quot;&gt;external_acl_type &lt;span style=&quot;color: #b6d7a8;&quot;&gt;domainGroup&lt;/span&gt; %LOGIN /usr/local/libexec/squid/wbinfo_group.pl&lt;/span&gt;

#    definimos la acl que comprueba si los
#    usuarios pertenecen al grupo InternetRestringido
&lt;span style=&quot;color: white;&quot;&gt;acl &lt;span style=&quot;color: #ffe599;&quot;&gt;PartiallyAllowedUsers&lt;/span&gt; external &lt;span style=&quot;color: #b6d7a8;&quot;&gt;domainGroup&lt;/span&gt; InternetRestringido&lt;/span&gt;

#    definimos la lista de direcciones
#    restringidas para dicho grupo
&lt;span style=&quot;color: white;&quot;&gt;acl &lt;span style=&quot;color: #ffe599;&quot;&gt;BlockList&lt;/span&gt; url_regex &lt;span style=&quot;color: #ea9999;&quot;&gt;&quot;/usr/local/etc/squid/deny.acl&quot;&lt;/span&gt;&lt;/span&gt;

#    definimos la lista de direcciones
#    restringidas para todo el mundo
&lt;span style=&quot;color: white;&quot;&gt;acl &lt;span style=&quot;color: #ffe599;&quot;&gt;BlockListAll&lt;/span&gt; url_regex &lt;span style=&quot;color: #ea9999;&quot;&gt;&quot;/usr/local/etc/squid/denyall.acl&quot;&lt;/span&gt;&lt;/span&gt;

#    aplicamos la denegacion a las acls anteriores
&lt;span style=&quot;color: white;&quot;&gt;http_access deny &lt;span style=&quot;color: #ffe599;&quot;&gt;PartiallyAllowedUsers&lt;/span&gt; &lt;span style=&quot;color: #ffe599;&quot;&gt;BlockList&lt;/span&gt;
http_access deny&lt;span style=&quot;color: #ffe599;&quot;&gt; BlockListAll&lt;/span&gt;&lt;/span&gt;

#    si ninguna de las restricciones anteriores ha sido aplicada,
#    entonces comprobamos la exigencia de estar autenticado
&lt;span style=&quot;color: white;&quot;&gt;acl &lt;span style=&quot;color: #ffe599;&quot;&gt;AuthorizedUsers&lt;/span&gt; proxy_auth REQUIRED
http_access allow &lt;span style=&quot;color: #ffe599;&quot;&gt;AuthorizedUsers&lt;/span&gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;IMPORTANTE&lt;/b&gt;: cada vez que hagamos cambios al &lt;b&gt;/usr/local/etc/squid/squid.conf&lt;/b&gt; es necesario reiniciar el servicio Squid. Para ello sólo tenemos que ejecutar este comando:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
/usr/local/etc/rc.d/squid restart&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Probando el invento&lt;/h4&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Llegados a este punto, tenemos que comprobar si todo ha salido bien. Para ello tenemos que configurar nuestro navegador favorito (o en su defecto la configuración global de acceso a Internet del sistema). Como navegador proxy pondremos la IP del lado privado de nuestro Appliance, es decir, la &lt;b&gt;192.168.3.254&lt;/b&gt; y como puerto el &lt;b&gt;3128&lt;/b&gt;. De momento no necesitamos especificar ningún dato más.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;background-color: #fff2cc;&quot;&gt;AVISO: Si utilizamos el proxy sin especificarlo en el navegador, sólo usado como gateway (es decir, en modo &lt;b&gt;proxy transparente&lt;/b&gt;), &lt;b&gt;no&lt;/b&gt; podremos disfrutar de las ventajas de la &lt;b&gt;autenticación NTLM&lt;/b&gt; &lt;b&gt;de Windows&lt;/b&gt;. La razón es muy sencilla. El proxy transparente actúa haciendo intercepción de paquetes, es decir, en &lt;a href=&quot;http://es.wikipedia.org/wiki/Modelo_OSI&quot;&gt;capa 3&lt;/a&gt;, mientras que la autenticación es un concepto relacionado con la &lt;a href=&quot;http://es.wikipedia.org/wiki/Modelo_OSI&quot;&gt;capa 5&lt;/a&gt; o superior. Si queremos forzar la configuración de proxy del navegador se pueden emplear diferentes estrategias que escapan a esta serie de artículos. No obstante, podremos seguir disfrutando del resto de funcionalidades del proxy (logueo, caché, tipos diversos de directivas, etc.) y hacer políticas de acceso basadas en la IP de cada usuario.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para comprobar si todo va bien, podemos probar a navegar por distintos sitios, tanto de los permitidos como de los prohibidos, iniciando sesión en Windows con distintos usuarios y ver si todo se comporta como debe.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Además, es fundamental tener controlados los dos archivos de log del Squid, el de registro de accesos (e intentos) y el de información del servicio (necesario para diagnosticar problemas). Respectivamente son:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
/var/squid/logs/access.log&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
/var/squid/logs/cache.log&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
¿Qué nos queda? Pues aunque el núcleo de nuestro sistema ya está montado, podemos añadirle muchas cosas interesantes: un proxy SOCKS (para aplicaciones que no sean web), herramientas de monitorización y estadísticas, un control básico de consumo de ancho de banda.... como ya veremos podemos estar agregando funciones casi eternamente, por el módico precio de un rato de lectura en &lt;a href=&quot;http://www.debugmachine.com/&quot;&gt;The Debug Machine&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Continuará...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.debugmachine.com/2013/02/creacion-de-un-virtual-appliance-para_24.html&quot;&gt;&amp;lt;&amp;lt; Artículo anterior&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/1716438554285718067/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/03/creacion-de-un-virtual-appliance-para.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/1716438554285718067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/1716438554285718067'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/03/creacion-de-un-virtual-appliance-para.html' title='Creación de un Virtual Appliance para control de Internet con VMware (parte 4)'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-7257951920162041314</id><published>2013-03-10T11:29:00.001+01:00</published><updated>2019-09-18T16:04:44.430+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cisco"/><category scheme="http://www.blogger.com/atom/ns#" term="cliente"/><category scheme="http://www.blogger.com/atom/ns#" term="vpn"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>&quot;Se busca Cliente Cisco VPN&quot;</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
He detectado que en ocasiones algunos usuarios del cliente Cisco VPN se quejan de que éste &quot;desaparece&quot; en su versión de Windows.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El síntoma principal es que si abres el icono del cliente (el de forma de candado) o alguno de los atajos a los perfiles (archivos PRF), no se abre la ventana de conexión ni se inicia el proceso, en los respectivos casos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Normalmente esto se debe a que por alguna razón hay un servicio parado. Pero antes veamos cómo está compuesto el cliente VPN de Cisco.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En realidad se trata de un conjunto de programas que funcionan como las capas de una cebolla. El cliente de Cisco es en realidad un programa de línea de comandos similar al de la versión Linux (&lt;b&gt;vpnclient.exe&lt;/b&gt;), que se apoya por un lado en un servicio encargado de levantar la interfaz virtual de red (servicio &lt;b&gt;CVPND&lt;/b&gt;) y por otro lado en distintos ejecutables auxiliares para el manejo de certificados, llamada del IPSEC-Tunnel, creación del punto a punto, etc. &amp;nbsp;Y por supuesto, sobre todos estos hay una interfaz gráfica que es la que nosotros vemos normalmente, el programa &lt;b&gt;vpngui.exe&lt;/b&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4udl0txoIaa6n_BbceibUSmw_0CS_sq6XLZMNvTWzYixya7FyzQBsTV-Ry3RtEx6O-LDU9lRs-EFTpi_9KLF1mVJCPwxjjphr83qKugpwsFNo67Jz9xdn_aeptuBlrFk-LB5VG05B_laj/s1600/vpnclient.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;146&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4udl0txoIaa6n_BbceibUSmw_0CS_sq6XLZMNvTWzYixya7FyzQBsTV-Ry3RtEx6O-LDU9lRs-EFTpi_9KLF1mVJCPwxjjphr83qKugpwsFNo67Jz9xdn_aeptuBlrFk-LB5VG05B_laj/s400/vpnclient.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Opciones de línea de comandos del cliente Cisco VPN. Muy útil para crear automatismos, conexiones transparentes, etc.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El error descrito al comienzo de este artículo suele darse porque el servicio CVPND no está levantado por alguna razón, o porque la interfaz virtual (suele aparecer como &lt;i&gt;Conexión de área local #2&lt;/i&gt;&amp;nbsp;o similar) puede estar deshabilitada.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
La solución&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Mi recomendación es seguir estos pasos hasta diagnosticar el problema con más exactitud:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Probar a habilitar la conexión, bien con el comando &lt;i&gt;netsh&lt;/i&gt; o bien haciendo click-derecho en el icono y en la opción &quot;habilitar&quot;.&lt;/li&gt;
&lt;li&gt;Probar a arrancar, si estuviese parado, o a levantar el servicio de la interfaz Cisco. La manera más cómoda para mí es ejecutando, como administrador, el siguiente comando: &lt;i style=&quot;font-weight: bold;&quot;&gt;net start CVPND&lt;/i&gt;&amp;nbsp;si es en la máquina local, o &lt;i style=&quot;font-weight: bold;&quot;&gt;sc \\equiporemoto start CVPND&lt;/i&gt;&amp;nbsp;si se trata de un equipo remoto.&lt;/li&gt;
&lt;li&gt;Probar a realizar la conexión mediante línea de comandos. Para ello sólo tenéis que consultar la ayuda del ejecutable &lt;b&gt;vpnclient.exe&lt;/b&gt;&amp;nbsp;(que se muestra en la ilustración anterior) y probar a realizar la conexión desde consola. Si este punto funciona, el problema quedaría aislado en la interfaz gráfica y seguramente sería cuestión de reinstalar la aplicación completa.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Si por lo que sea necesitáis reinstalar el cliente, me consta que a veces no sabe uno dónde puso los ficheros de instalación. Por eso os lo dejo en la &lt;a href=&quot;http://www.debugmachine.com/p/descargas.html&quot;&gt;página de descargas&lt;/a&gt;.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/7257951920162041314/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/03/se-busca-cliente-cisco-vpn.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/7257951920162041314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/7257951920162041314'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/03/se-busca-cliente-cisco-vpn.html' title='&quot;Se busca Cliente Cisco VPN&quot;'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4udl0txoIaa6n_BbceibUSmw_0CS_sq6XLZMNvTWzYixya7FyzQBsTV-Ry3RtEx6O-LDU9lRs-EFTpi_9KLF1mVJCPwxjjphr83qKugpwsFNo67Jz9xdn_aeptuBlrFk-LB5VG05B_laj/s72-c/vpnclient.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-5093390112226032950</id><published>2013-02-24T19:37:00.000+01:00</published><updated>2013-03-14T20:22:15.916+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="appliance"/><category scheme="http://www.blogger.com/atom/ns#" term="firewall"/><category scheme="http://www.blogger.com/atom/ns#" term="free"/><category scheme="http://www.blogger.com/atom/ns#" term="FreeBSD"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="iptables"/><category scheme="http://www.blogger.com/atom/ns#" term="proxy"/><category scheme="http://www.blogger.com/atom/ns#" term="router"/><category scheme="http://www.blogger.com/atom/ns#" term="seguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><category scheme="http://www.blogger.com/atom/ns#" term="Squid"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><title type='text'>Creación de un Virtual Appliance para control de Internet con VMware (parte 3)</title><content type='html'>&lt;a href=&quot;http://www.debugmachine.com/2013/02/creacion-de-un-virtual-appliance-para_22.html&quot;&gt;&amp;lt;&amp;lt; Artículo anterior&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez que tenemos nuestro sistema operativo base, el FreeBSD, montado y actuando como router y firewall básico es el momento de seguir con el siguiente paso: la instalación del proxy-caché, el afamado &lt;a href=&quot;http://www.squid-cache.org/&quot;&gt;SQUID&lt;/a&gt;. Estamos ante uno de esos productos que, además de ser open-source y gratuitos, son la mejor opción del mercado para realizar sus funciones, por lo que una vez más se demuestra que los productos gratuitos no tienen por qué ser necesariamente inferiores a sus competidores comerciales.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Aunque en el momento de escribir este tutorial, la versión estable en producción es la &lt;a href=&quot;http://www.squid-cache.org/Versions/v3/3.3/&quot;&gt;3.3&lt;/a&gt;, me he basado en la versión 2.7.9, no por nada en especial, simplemente porque es el paquete que venía en la ISO de FreeBSD que teníamos por aquí a mano y que hemos usado de base para el proyecto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La instalación es muy fácil vía &lt;a href=&quot;http://www.freebsd.org/doc/handbook/using-sysinstall.html&quot;&gt;sysinstall&lt;/a&gt;. Ejecutamos dicha herramienta y seleccionamos los siguientes menús hasta llegar al paquete del Squid:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Configure → Packages → FTP o CD → Net → &lt;b&gt;squid-2.7.9&lt;/b&gt;&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para la puesta en marcha, primero haremos unas pequeñas modificaciones de configuración.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Editamos el archivo&amp;nbsp;&lt;b id=&quot;internal-source-marker_0.2905415832065046&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/usr/local/etc/squid/squid.conf y modificamos la siguiente línea así:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b id=&quot;internal-source-marker_0.2905415832065046&quot; style=&quot;font-weight: normal; text-align: start;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;http_port 3128&lt;/span&gt;&lt;span style=&quot;font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; transparent&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Editamos el archivo &lt;/span&gt;&lt;span id=&quot;internal-source-marker_0.2905415832065046&quot;&gt;&lt;span style=&quot;font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/etc/&lt;/span&gt;&lt;span style=&quot;font-size: 16px; font-weight: bold; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;rc.conf&lt;/span&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; y agregamos la siguiente línea:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b id=&quot;internal-source-marker_0.2905415832065046&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;squid_enable=”YES”&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;div style=&quot;text-align: start;&quot;&gt;
&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Ahora es necesario inicializar el Squid, para crear los subdirectorios de caché, logs, etc. Para ello, con privilegios de root, ejecutamos el siguiente comando:&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b id=&quot;internal-source-marker_0.2905415832065046&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;/usr/local/sbin/squid -z&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Y con esto ya podemos arrancar el servicio Squid:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b id=&quot;internal-source-marker_0.2905415832065046&quot; style=&quot;font-weight: normal; text-align: start;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;/usr/local/etc/rc.d/squid start&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para probarlo, podemos configurar nuestro navegador de Internet favorito para que conecte a través del proxy (la IP 192.168.3.254, según nuestro ejemplo, y el puerto por defecto, el &lt;b&gt;3128&lt;/b&gt;).&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Proxy transparente&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Hasta ahora hemos conseguido que nuestro appliance virtual funcione como un eficiente router y como un simple proxy que por defecto nos ahorrará algo de tráfico (por su función de caché) y nos permitirá registrar las visitas de aquellos equipos que lo tengan configurado.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sin embargo, y aunque hay diversos métodos para forzar a un cliente de la red a que use nuestro proxy, siempre puede quedarnos la posibilidad de que algún usuario avanzado tenga conocimiento y acceso a la configuración de proxy lo que le permitiría borrar esa configuración y salir a Internet directamente por la puerta de enlace, impidiendo así que sus visitas queden registradas.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
¿Hay solución a este problema? Por supuesto: se llama &quot;proxy transparente&quot;. Es un truco muy habitual en los ISP para ahorrar tráfico de datos y muchas veces nuestras conexiones a la WEB pasan por este tipo de proxies sin darnos cuenta. Consiste en implementar funciones de proxy a la misma puerta de enlace, de tal modo que simplemente por enrutar tráfico hacia dicha puerta de enlace, los paquetes son capturados y redirigidos a un proxy de manera invisible para el usuario. Nuestro Squid, como no podía ser menos, permite el funcionamiento en modo &quot;transparente&quot; (por ello pusimos ese parámetro en el &lt;i&gt;squid.conf&lt;/i&gt;).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para que la puerta de enlace redirija los paquetes de la WEB (por defecto, el puerto 80) hacia el proxy (que hemos puesto en el puerto TCP 3128), utilizaremos el firewall del sistema siguiendo estos pasos:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Creamos el archivo&amp;nbsp;&lt;b id=&quot;internal-source-marker_0.2905415832065046&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/etc/ipnat.rules con el siguiente contenido:&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #202020; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #40ffff;&quot;&gt;rdr&lt;/span&gt; &lt;span style=&quot;color: #40ffff;&quot;&gt;em0&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #40ffff;&quot;&gt;port&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;80&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;127&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: #40ffff;&quot;&gt;port&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;3128&lt;/span&gt; &lt;span style=&quot;color: #40ffff;&quot;&gt;tcp&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Editamos el archivo &lt;/span&gt;&lt;/b&gt;&lt;b id=&quot;internal-source-marker_0.2905415832065046&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/etc/rc.conf y le agregamos las siguientes líneas:&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background: #202020; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #bbbbbb;&quot;&gt;ipnat_enable&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;”YES”&lt;/span&gt;
&lt;span style=&quot;color: #bbbbbb;&quot;&gt;ipnat_rules&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;”/etc/ipnat.rules”&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Con esta configuración, nuestro flamante appliance funciona como proxy transparente y por tanto cualquier equipo que navegue por la WEB usándolo como puerta de enlace ya pasará por el Squid de manera forzada, incluso aunque el navegador esté configurado para navegar en modo directo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Podemos en cualquier momento comprobar que las visitas a la WEB se van quedando registradas consultando el log de acceso, el cuál se encuentra en la siguiente ubicación:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;b id=&quot;internal-source-marker_0.2905415832065046&quot; style=&quot;font-weight: normal; text-align: start;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/var/squid/logs/access.log&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b style=&quot;font-weight: normal; text-align: start;&quot;&gt;&lt;span style=&quot;font-size: 16px; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;En el siguiente capítulo vamos a integrar Squid con Samba para así poder usar autenticación integrada en las estaciones de trabajo de Windows y poder configurar los accesos a Internet (así como restricciones a diferentes páginas web, etc.) en función de la pertenencia a grupos de Active Directory. Y sí, sigue siendo gratis.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&lt;a href=&quot;http://www.debugmachine.com/2013/03/creacion-de-un-virtual-appliance-para.html&quot;&gt;Continuará...&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.debugmachine.com/2013/02/creacion-de-un-virtual-appliance-para_22.html&quot; style=&quot;text-align: start;&quot;&gt;&amp;lt;&amp;lt; Artículo anterior&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/5093390112226032950/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/02/creacion-de-un-virtual-appliance-para_24.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5093390112226032950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5093390112226032950'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/02/creacion-de-un-virtual-appliance-para_24.html' title='Creación de un Virtual Appliance para control de Internet con VMware (parte 3)'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-288305788353990598</id><published>2013-02-22T10:07:00.001+01:00</published><updated>2019-09-18T16:05:14.220+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="appliance"/><category scheme="http://www.blogger.com/atom/ns#" term="firewall"/><category scheme="http://www.blogger.com/atom/ns#" term="free"/><category scheme="http://www.blogger.com/atom/ns#" term="FreeBSD"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="iptables"/><category scheme="http://www.blogger.com/atom/ns#" term="proxy"/><category scheme="http://www.blogger.com/atom/ns#" term="router"/><category scheme="http://www.blogger.com/atom/ns#" term="seguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><category scheme="http://www.blogger.com/atom/ns#" term="Squid"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><title type='text'>Creación de un Virtual Appliance para control de Internet con VMware (parte 2)</title><content type='html'>&lt;a href=&quot;http://www.debugmachine.com/2013/02/creacion-de-un-virtual-appliance-para.html&quot;&gt;&amp;lt;&amp;lt; Artículo anterior &lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En el anterior artículo habíamos sentado las bases sobre el appliance que queremos construir: las funcionalidades, la intrastructura y el software y herramientas necesarias.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El siguiente paso es describir el planteamiento de manera más concreta y comenzar con la instalación básica del sistema operativo base y de los paquetes mínimos necesarios.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;h4&gt;
La red&lt;/h4&gt;
&lt;br /&gt;
Desde el punto de vista de la red local, este esquema representa la filosofía del proyecto:&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMoYRymWuJZClNFyxMp1oHpEyfQqGJU2VnDHjtSN-vqO06gZJ8SFZdInota_ghYV9Ez29delLCvvx3CHTEncAjfPJnEwcRVp8QgjqP45r60Q14A50qj5Lac_8GjHOkxXbLXio6nJx-60Up/s1600/appliance-esquema.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMoYRymWuJZClNFyxMp1oHpEyfQqGJU2VnDHjtSN-vqO06gZJ8SFZdInota_ghYV9Ez29delLCvvx3CHTEncAjfPJnEwcRVp8QgjqP45r60Q14A50qj5Lac_8GjHOkxXbLXio6nJx-60Up/s640/appliance-esquema.png&quot; width=&quot;586&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como vemos, hemos separado físicamente las dos &quot;patas&quot; de nuestro appliance para garantizar que, en caso de fallo de configuración o brecha de seguridad, nuestras estaciones de trabajo jamás podrán alcanzar el segmento de red que daría acceso directo e irrestricto a Internet. Para ello hemos segmentado la red en capa 2 mediante el etiquetado de paquetes 802.1Q, las VLAN.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En nuestro ejemplo, la VLAN por defecto del switch es la 1, y ahí dejaremos la mayoría de dispositivos. La VLAN con ID 2 sería la que contiene la zona desmilitarizada (DMZ) y que conectará a la otra &quot;pata&quot; de nuestro appliance.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;text-align: justify;&quot;&gt;
Configurando la infraestructura&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El primer paso es tener las VLANs a punto en nuestra electrónica de red. Si ya tenemos nuestras VLANes separadas a nuestro gusto, pues sólo tendremos que utilizar las que corresponda a la configuración actual. Si aún todo el switch está gestionado en &quot;plano&quot;, este es el momento de configurar una VLAN adicional con el identificador &quot;2&quot; (en nuestro ejemplo la VLAN para la zona &quot;aislada&quot; de la red principal). Cómo configurar las VLANes es algo que escapa al alcance de este artículo y además es distinto para cada fabricante, así que corresponde al lector hacer una pequeña incursión en Google llegado a este punto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Una vez nuestros switches están configurados, tenemos que crear en nuestro VMware las redes virtuales. Para ello añadimos un switch virtual (vSwitch) y le asociamos la interfaz de red que esté conectada a la VLAN 2 del switch físico. Nos pedirá crear una nueva red virtual (VM Network 2) y como ID de VLAN pondremos 2.&lt;br /&gt;
&lt;br /&gt;
Una vez configurada la red virtual debe quedar algo parecido a esto:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizgbCC2ylJjPp9Y99obQbZpcEBc8KD3ujhVDBCK31v-5qQ19EnAcQTYjq7LkYOtynn8pRVRePa_j9jeKXwuyQDKKVX1NJMHMzxuBAMJrGFRTGthr_XMWsGagLpxt8-x3opxHhG9svI8yuI/s1600/vm-network.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;323&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizgbCC2ylJjPp9Y99obQbZpcEBc8KD3ujhVDBCK31v-5qQ19EnAcQTYjq7LkYOtynn8pRVRePa_j9jeKXwuyQDKKVX1NJMHMzxuBAMJrGFRTGthr_XMWsGagLpxt8-x3opxHhG9svI8yuI/s400/vm-network.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
No vamos a entrar en detalles de configuración de redes de VMware ya que hay información detallada por todo Internet. &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El siguiente paso es crear la máquina virtual. Creamos una nueva máquina por el procedimiento habitual, y le damos para empezar las siguientes características (se pueden ampliar más adelante):&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Tipo de máquina: Typical, Other, FreeBSD 32bit (o 64, dependiendo de nuestra versión de FreeBSD) &lt;/li&gt;
&lt;li&gt;RAM 128 MB&lt;/li&gt;
&lt;li&gt;HD: 6 GB &lt;/li&gt;
&lt;li&gt;CPU: 2 cores&lt;/li&gt;
&lt;li&gt;NIC: 2 interfaces de tipo E1000 &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Aunque las especificaciones parezcan demasiado modestas, en realidad suelen ser suficiente para este tipo de aplicaciones. En cualquier momento se puede ampliar la RAM que es lo que más puede necesitarse.&lt;/div&gt;
&lt;br /&gt;
Una vez creada, y antes de comenzar la instalación del sistema operativo, accedemos a las propiedades de la máquina y asignamos a cada interfaz de red una red virtual diferente (correspondiendo con las VLANs 1 y 2 de nuestro ejemplo), si no lo hicimos ya en el momento de la creación.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9FOUrDL0UNUelV9G1NwItEo-SejfQtV04DkUiW2y18h1aBoQVnVt3l7f0fj7x2fCl7OEjR3ejmkb0hxnc5iassKl0_9Q7Cs38BnBFxapZ7thSibFct9rxBA0gCWKWTjU7rJPkax5tEATr/s1600/vm-network-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;115&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9FOUrDL0UNUelV9G1NwItEo-SejfQtV04DkUiW2y18h1aBoQVnVt3l7f0fj7x2fCl7OEjR3ejmkb0hxnc5iassKl0_9Q7Cs38BnBFxapZ7thSibFct9rxBA0gCWKWTjU7rJPkax5tEATr/s400/vm-network-2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ya estamos listos para el siguiente paso.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Instalación de FreeBSD&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Para escribir este tutorial yo me he basado en una imagen ISO que tenía por aquí de FreeBSD 8.2 32bit, aunque no debería haber demasiada diferencia con versiones posteriores.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Comenzad la instalación en la máquina virtual (bien tostando el CD o bien enganchando la imagen ISO con el VMware) y pronto os pedirá los parámetros de organización del disco. El BSD es ligeramente distinto a Linux en cuanto a la nomenclatura usada para el particionado. Para no complicaros mucho la vida, mi recomendación es que hagáis un &quot;slice&quot; principal que ocupe todo el disco físico, y dentro de este slice hagáis las siguientes particiones:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;blockquote&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cols=&quot;2&quot;&gt;
 &lt;colgroup span=&quot;2&quot; width=&quot;85&quot;&gt;&lt;/colgroup&gt;
 &lt;tbody&gt;
&lt;tr&gt;
  &lt;td height=&quot;18&quot; style=&quot;text-align: left;&quot;&gt;swap&lt;/td&gt;
  &lt;td style=&quot;text-align: left;&quot;&gt;256 MB&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td height=&quot;17&quot; style=&quot;text-align: left;&quot;&gt;/&lt;/td&gt;
  &lt;td style=&quot;text-align: left;&quot;&gt;4350 MB&lt;/td&gt;
 &lt;/tr&gt;
&lt;tr&gt;
  &lt;td height=&quot;18&quot; style=&quot;text-align: left;&quot;&gt;/var/log&lt;/td&gt;
  &lt;td style=&quot;text-align: left;&quot;&gt;1536 MB&lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A continuación tenemos que seleccionar qué paquetes queremos instalar. Seleccionamos &quot;custom installation&quot; y marcamos los siguientes grupos de paquetes:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Base&lt;/li&gt;
&lt;li&gt;Kernels&lt;/li&gt;
&lt;li&gt;Doc (ENG)&lt;/li&gt;
&lt;li&gt;Info&lt;/li&gt;
&lt;li&gt;Man&lt;/li&gt;
&lt;li&gt;Src/Sys&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Después escogemos una password para el superusuario &#39;root&#39;; no hace falta agregar en principio más usuarios.&lt;br /&gt;
&lt;br /&gt;
Ahora ya podemos iniciar sesión. El primer paso y más importante a realizar en la configuración de FreeBSD es configurar las interfaces de red. Recordaremos que de las dos interfaces, una irá a la VLAN por defecto y la otra irá a la VLAN 2 reservada para la red de salida a Internet. El orden se debería corresponder con el que se haya utilizado en VMware para definir las interfaces, aunque comprobarlo es tan sencillo como habilitar y deshabilitar las interfaces de la VM y hacer un &lt;b&gt;ifconfig&lt;/b&gt;&amp;nbsp;para ver con cuáles se corresponden las interfaces &lt;b&gt;em0 &lt;/b&gt;y&amp;nbsp;&lt;b&gt;em1&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Una vez se tenga seguridad, se procede a editar el archivo &lt;b&gt;/etc/rc.conf&lt;/b&gt;&amp;nbsp;para modificar (o crear) las siguientes líneas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #202020; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; font-size: small; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #bbbbbb;&quot;&gt;ifconfig_em0&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;”inet 192.168.3.254 netmask 255.255.255.0”&lt;/span&gt;
&lt;span style=&quot;color: #bbbbbb;&quot;&gt;ifconfig_em1&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;”inet 172.16.5.1 netmask 255.255.255.0”&lt;/span&gt;
&lt;span style=&quot;color: #bbbbbb;&quot;&gt;defaultrouter&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;”172.16.5.254”&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
No olvidemos que este appliance será el gateway por defecto de nuestras estaciones de trabajo, por lo que si necesitamos añadir algún tipo de ruta estática (por ejemplo, para enrutar el tráfico de una VPN por otro sitio) este es el lugar y momento para hacerlo. Para ello editamos nuevamente el &lt;b&gt;/etc/rc.conf&lt;/b&gt; y agregamos las líneas que necesitemos (para ejecutar el comando &lt;b&gt;route&lt;/b&gt;):&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #202020; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; fond-size: small; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;#nuestra VPN usa la red 192.168.x.x y&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;#su puerta de enlace es la 172.16.5.253&lt;/span&gt;

route add -net 192.168.0.0/16 172.16.5.253
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Para finalizar esta primera fase de configuración, dejaremos la puerta abierta a administrar la máquina por SSH, para lo que editaremos el &lt;b&gt;/etc/ssh/sshd_config&lt;/b&gt; y añadiremos o modificaremos la siguiente línea:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;PermitRootLogin yes&lt;/span&gt;&lt;/blockquote&gt;
Para asegurarnos de que todos los servicios necesarios están funcionando correctamente y actualizados, lo mejor ahora es reiniciar la máquina. A partir de este momento, si todo ha salido bien, ya podemos entrar con un cliente SSH cualquiera y ya podemos poner como puerta de enlace de nuestros PCs la dirección privada del appliance, es decir, la &lt;b&gt;192.168.3.254&lt;/b&gt; para tener una navegación básica por Internet.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En el siguiente artículo continuaremos con la configuración básica del proxy Squid.&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.debugmachine.com/2013/02/creacion-de-un-virtual-appliance-para_24.html&quot;&gt;Continuará...&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.debugmachine.com/2013/02/creacion-de-un-virtual-appliance-para.html&quot;&gt;&amp;lt;&amp;lt; Artículo anterior &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/288305788353990598/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/02/creacion-de-un-virtual-appliance-para_22.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/288305788353990598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/288305788353990598'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/02/creacion-de-un-virtual-appliance-para_22.html' title='Creación de un Virtual Appliance para control de Internet con VMware (parte 2)'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMoYRymWuJZClNFyxMp1oHpEyfQqGJU2VnDHjtSN-vqO06gZJ8SFZdInota_ghYV9Ez29delLCvvx3CHTEncAjfPJnEwcRVp8QgjqP45r60Q14A50qj5Lac_8GjHOkxXbLXio6nJx-60Up/s72-c/appliance-esquema.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-7523194930726668423</id><published>2013-02-19T23:47:00.000+01:00</published><updated>2019-09-18T16:05:28.914+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="appliance"/><category scheme="http://www.blogger.com/atom/ns#" term="firewall"/><category scheme="http://www.blogger.com/atom/ns#" term="free"/><category scheme="http://www.blogger.com/atom/ns#" term="FreeBSD"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="iptables"/><category scheme="http://www.blogger.com/atom/ns#" term="proxy"/><category scheme="http://www.blogger.com/atom/ns#" term="router"/><category scheme="http://www.blogger.com/atom/ns#" term="seguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><category scheme="http://www.blogger.com/atom/ns#" term="Squid"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><title type='text'>Creación de un Virtual Appliance para control de Internet con VMware (parte 1)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Esta es la primera entrega de varios artículos que voy a publicar en los próximos días mostrando un caso práctico de creación de un &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_appliance&quot;&gt;appliance virtual&lt;/a&gt; para controlar el acceso a Internet de una compañía usando exclusivamente software gratuito.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La guía que vamos a desarrollar podría perfectamente valer para crear un &lt;a href=&quot;http://en.wikipedia.org/wiki/Computer_appliance&quot;&gt;appliance&lt;/a&gt; tradicional basado en un &lt;a href=&quot;http://en.wikipedia.org/wiki/Headless_system&quot;&gt;equipo headless&lt;/a&gt; cualquiera; además no es necesario un equipo de extremada potencia por lo que es la excusa perfecta para reutilizar cualquier PC al que íbamos a dar matarile. Sin embargo, he escogido el formato de máquina virtual porque así de paso nos aprovechamos de las distintas ventajas de usar una plataforma como &lt;a href=&quot;http://www.vmware.com/es/&quot;&gt;VMware&lt;/a&gt; para usos que no siempre son tan conocidos o habituales.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Requisitos previos&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para realizar este proyecto os propongo un escenario ideal, aunque se pueden hacer variaciones adecuándolo a nuestras necesidades y, por supuesto, nuestros recursos. En este escenario necesitaríamos:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Un acceso a Internet por Ethernet. Sería válido tanto un router en modo bridge (la IP pública iría a nuestro appliance) o disponer de un acceso detrás de otro router/firewall (en cuyo caso usaríamos una IP del lado privado para la pata WAN de nuestro Appliance). En nuestro ejemplo usaremos esta segunda opción.&lt;/li&gt;
&lt;li&gt;Un servidor o PC con dos interfaces de red Ethernet, capaz de correr VMware ESXi (excepto si optamos por hacer un appliance físico).&lt;/li&gt;
&lt;li&gt;Un switch gestionable y compatible con el estándar &lt;a href=&quot;http://es.wikipedia.org/wiki/IEEE_802.1Q&quot;&gt;802.1Q&lt;/a&gt; para segmentar la red mediante VLANs.&lt;/li&gt;
&lt;li&gt;Una pizca de paciencia ☺&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez entendamos el objetivo del proyecto y la configuración, veremos que los puntos anteriores son fácilmente modificables a nuestro antojo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Funcionalidades y características&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Nuestro appliance tendrá al menos las siguientes características y funciones que cito a continuación:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Enrutador&lt;/li&gt;
&lt;li&gt;Firewall básico&lt;/li&gt;
&lt;li&gt;Proxy web transparente&lt;/li&gt;
&lt;li&gt;Proxy web con autenticación de usuarios&lt;/li&gt;
&lt;li&gt;Proxy &lt;a href=&quot;http://es.wikipedia.org/wiki/SOCKS&quot;&gt;SOCKS5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Integración con usuarios y grupos de Active Directory&lt;/li&gt;
&lt;li&gt;Control por usuarios/destino/contenido&lt;/li&gt;
&lt;li&gt;Control de ancho de banda y tráfico web por usuario&lt;/li&gt;
&lt;li&gt;Caché de contenidos web&lt;/li&gt;
&lt;li&gt;Registro exhaustivo de los accesos realizados a Internet&lt;/li&gt;
&lt;li&gt;Visualización de estadísticas&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Además, dejamos abierta la puerta a futuras funcionalidades como control de tráfico y ancho de banda por protocolo y contenido (&lt;a href=&quot;http://es.wikipedia.org/wiki/Traffic_shaping&quot;&gt;traffic shaping&lt;/a&gt; con &lt;a href=&quot;http://es.wikipedia.org/wiki/Inspecci%C3%B3n_Profunda_de_Paquetes&quot;&gt;DPI&lt;/a&gt;).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
Software utilizado&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como cualquier lector se habrá dado cuenta a estas alturas, este proyecto está claramente orientado a un sistema operativo de &quot;&lt;a href=&quot;http://es.wikipedia.org/wiki/Unix-like&quot;&gt;tipo Unix&lt;/a&gt;&quot;. Podemos elegir entre muchos de sus &quot;sabores&quot; (Linux, Solaris, Mac OS X...) pero por una cuestión de gusto personal, he escogido montarlo todo sobre &lt;a href=&quot;http://www.freebsd.org/&quot;&gt;FreeBSD&lt;/a&gt;. La razón es que soy más partidario de la rama de Berkeley quizás por tradición y porque &lt;i&gt;se dice&lt;/i&gt; que los BSDs son más robustos y seguros que el kernel Linux. Hoy en día no creo que haya razones objetivas para sostener esa creencia, pero aún así daremos una oportunidad a nuestro gran aliado FreeBSD.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La base del propio FreeBSD nos servirá para configurarlo como router. Las funciones de firewall, por supuesto dependerán de IPFW (el firewall integrado con FreeBSD).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El proxy (transparente y autenticado) será el maravilloso &lt;a href=&quot;http://www.squid-cache.org/&quot;&gt;SQUID&lt;/a&gt;, que se apoyará en &lt;a href=&quot;http://es.wikipedia.org/wiki/Samba_(programa)&quot;&gt;Samba&lt;/a&gt; para la autenticación y control de usuarios del dominio Active Directory de la compañía. Squid será también el responsable de filtrar o prohibir contenidos, realizar logs completos de la actividad de los usuarios y el control de ancho de banda y tráfico de las conexiones web.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por último agregaremos un proxy SOCKS5 complementario usando un simple pero efectivo túnel &lt;a href=&quot;http://es.wikipedia.org/wiki/Secure_Shell&quot;&gt;SSH&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Esta configuración es robusta, muy fiable y está ampliamente probada por equipos IT de todo el mundo. En total podemos hacer una estimación de ahorro de varios miles de euros en software respecto de una alternativa basada en Microsoft Windows Server&amp;nbsp;+ Microsoft ISA Server, aparte de necesitar un hardware mucho más modesto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En el próximo artículo definiremos la arquitectura y filosofía de la implementación, así como los primeros pasos (instalación de FreeBSD, paquetes, etc.).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.debugmachine.com/2013/02/creacion-de-un-virtual-appliance-para_22.html&quot;&gt;Continuará...&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/7523194930726668423/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/02/creacion-de-un-virtual-appliance-para.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/7523194930726668423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/7523194930726668423'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/02/creacion-de-un-virtual-appliance-para.html' title='Creación de un Virtual Appliance para control de Internet con VMware (parte 1)'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-6316320021515865175</id><published>2013-02-18T15:09:00.000+01:00</published><updated>2013-02-18T18:27:10.584+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Active Directory"/><category scheme="http://www.blogger.com/atom/ns#" term="DNS"/><category scheme="http://www.blogger.com/atom/ns#" term="error"/><category scheme="http://www.blogger.com/atom/ns#" term="netlogon"/><category scheme="http://www.blogger.com/atom/ns#" term="servidor"/><category scheme="http://www.blogger.com/atom/ns#" term="windows server"/><title type='text'>Arranque diferido de servicios en servidores y estaciones Windows</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
En muchas ocasiones, algunos errores muy comunes en los sistemas operativos de Microsoft se deben a que algunos servicios arrancan de manera asíncrona, pero sin embargo tienen dependencias entre ellos para poder funcionar. Hay veces que dichas dependencias están ya preconfiguradas por defecto (el típico servicio que no puedes pararlo sin parar antes otros cuatro dependientes de él); pero otras veces las dependencias no están incluídas en la configuración de los servicios, y cuando el servicio dependiente se adelanta a su dependencia, empiezan a producirse todo tipo de problemas.&lt;br /&gt;
&lt;br /&gt;
Varios de estos típicos errores suelen darse en los servidores que son &lt;a href=&quot;http://es.wikipedia.org/wiki/Controlador_de_dominio&quot;&gt;controlador de dominio&lt;/a&gt;, especialmente cuando el servicio DNS local se retrasa más de la cuenta. Dado que el DNS es parte del corazón de la infraestructura Active Directory, si dicho servicio no está levantado a tiempo afectará a otros servicios y funciones (sobre todo cuando es necesario interrogar al DC acerca de detalles de la infaestructura, resolver nombres internos, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h4&gt;
Diferentes acercamientos al problema&lt;/h4&gt;
&lt;br /&gt;
En realidad es un problema complejo y en cada caso requerirá una estrategia diferente. Sin embargo, hay dos cosas básicas a intentar: crear manualmente dependencias entre servicios y cambiar el orden de arranque de los servicios de tipo driver o controlador. En ocasiones, puede ser un driver el que haya demorado su arranque provocando el fallo de algunos servicios dependientes.&lt;br /&gt;
&lt;br /&gt;
Para crear dependencias de servicios se puede hacer mediante el &lt;a href=&quot;http://es.wikipedia.org/wiki/Registro_de_Windows&quot;&gt;registro de Windows&lt;/a&gt;. Hay otras maneras más elegantes, por ejemplo con un script WSH usando la clase Win32_ServiceSpecification de la WMI/WBEM, pero quedan fuera del alcance de este artículo.&lt;br /&gt;
&lt;br /&gt;
La mayoría de problemas en controladores de dominio se deben a dependencias del servicio &lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc778921%28v=ws.10%29.aspx&quot;&gt;Netlogon&lt;/a&gt;; trabajemos pues sobre este ejemplo.&lt;br /&gt;
&lt;br /&gt;
Usando la herramienta Regedit o cualquier otra similar, localizamos la clave donde se almacenan los datos de todos los servicios:&lt;br /&gt;
&lt;br /&gt;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\&lt;nombre-servicio&gt;&lt;/nombre-servicio&gt;&lt;br /&gt;
&lt;br /&gt;
en este caso:&lt;br /&gt;
&lt;br /&gt;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon&lt;br /&gt;
&lt;br /&gt;
Para crear una dependencia, tenemos que editar o crear un valor de tipo REG_MULTI_SZ que se llame DependOnService y agregar en su interior los nombres de los servicios de los cuáles queremos hacerlo depender (uno por cada línea). En nuestro caso, queremos que el servicio Netlogon no intente levantarse hasta tener certeza de que ya está levantado el servicio DNS local (fundamental en controladores de dominio).&lt;br /&gt;
&lt;br /&gt;
Para ello añadimos dicho servicio y aceptamos los cambios:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRNlmIMyti6VvDJUdJQFufUnhABf4cQSFIUAHVezrYJCQ41R8PFCCwgKyg2tCo3mnd9QCfYeQSOAVDrvx40ie0kmfQObbSBmGKEuaP6jRta0aU8FQFYVMbaTsq43F_8wK2Hn1Dnq0L0Rap/s1600/netlogon01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;273&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRNlmIMyti6VvDJUdJQFufUnhABf4cQSFIUAHVezrYJCQ41R8PFCCwgKyg2tCo3mnd9QCfYeQSOAVDrvx40ie0kmfQObbSBmGKEuaP6jRta0aU8FQFYVMbaTsq43F_8wK2Hn1Dnq0L0Rap/s400/netlogon01.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Para aplicar los cambios debería reiniciarse el servicio, aunque para asegurarse es uno de esos pocos casos en los que es mejor reiniciar el servidor.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: white;&quot;&gt;&lt;span style=&quot;background-color: red;&quot;&gt;&lt;u&gt;IMPORTANTE&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;: en este caso hemos hecho depender a un servicio crítico como es Netlogon del servicio DNS. Si este último no estuviese instalado en el DC o no pudiese iniciar, estaríamos provocando un problema grave de funcionamiento, por lo que es conveniente tener este cabo bien atado.&lt;br /&gt;
&lt;br /&gt;
En ocasiones los servicios, como dijimos, dependen de drivers o controladores. En Windows, un driver no es más que otro tipo de servicio que no se muestra en la ventana &lt;i&gt;services.msc&lt;/i&gt;, pero que internamente funciona de manera similar como de hecho se puede comprobar mirando la lista de servicios en el Regedit.&lt;br /&gt;
&lt;br /&gt;
Windows Server no nos permite establecer el orden exacto de arranque de cada driver, pero sí de cada &lt;i&gt;grupo de drivers&lt;b&gt;. &lt;/b&gt;&lt;/i&gt;La mayoría de drivers están asociados a un grupo determinado, y esos grupos sí pueden ser ordenados a nuestro antojo.&lt;br /&gt;
&lt;br /&gt;
Para ello tenemos la siguiente clave de registro:&lt;br /&gt;
&lt;br /&gt;
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder&lt;br /&gt;
&lt;br /&gt;
donde el valor &lt;b&gt;List&lt;/b&gt; contiene la lista ordenada de grupos de servicios:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxIE-L2GcuCwvFm1GNuQjtr3-nACz_lDHDeeRfxw82lRwZitkrDZNSJNyz_Y1B2hVwkZygwkPxUyya3I1awpeu2CtXsOqQmULOkMqZgDUFlbOWTvt6rGa-YIbThA0NIS1JpzoyRlfueptx/s1600/netlogon02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;308&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxIE-L2GcuCwvFm1GNuQjtr3-nACz_lDHDeeRfxw82lRwZitkrDZNSJNyz_Y1B2hVwkZygwkPxUyya3I1awpeu2CtXsOqQmULOkMqZgDUFlbOWTvt6rGa-YIbThA0NIS1JpzoyRlfueptx/s400/netlogon02.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Normalmente, los retrasos en casi todos los servicios de red terminan siendo debidos a que las inteterfaces de red (NIC) tardan en estar operativas. Basta con ordenar los grupos de servicios para que todos los que están relacionados con la red arranquen antes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/6316320021515865175/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/02/arranque-diferido-de-servicios-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/6316320021515865175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/6316320021515865175'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/02/arranque-diferido-de-servicios-en.html' title='Arranque diferido de servicios en servidores y estaciones Windows'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRNlmIMyti6VvDJUdJQFufUnhABf4cQSFIUAHVezrYJCQ41R8PFCCwgKyg2tCo3mnd9QCfYeQSOAVDrvx40ie0kmfQObbSBmGKEuaP6jRta0aU8FQFYVMbaTsq43F_8wK2Hn1Dnq0L0Rap/s72-c/netlogon01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-3925699255943538459</id><published>2013-02-18T09:59:00.000+01:00</published><updated>2013-02-18T18:28:49.096+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="error"/><category scheme="http://www.blogger.com/atom/ns#" term="ESXi"/><category scheme="http://www.blogger.com/atom/ns#" term="servidor"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><title type='text'>Reinicio de servicios en ESXi</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Aunque la familia de productos VMware es en general extremedamente eficiente y estable, en ocasiones el hipervisor no está exento de comportamientos imprevistos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En al menos una o dos ocasiones he experimentado problemas que requerían reiniciar la máquina física conteniendo al hipervisor, y cuando se trata de un sistema en el cuál no hay cabina externa de almacenamiento de las máquinas virtuales, ni &lt;a href=&quot;http://www.vmware.com/products/datacenter-virtualization/vsphere/vmotion.html&quot;&gt;vMotion&lt;/a&gt;, ni otras facilidades para conseguir alta disponibilidad, pues es un problema porque hay que hacer una parada de todos los servidores virtualizados dependientes de ese host.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Problemas de este tipo suelen ser los que tienen síntomas como:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;La autenticación Kerberos y la integración con el Active Directory no funcionan, no permitiendo entrar con usuarios de la forma &lt;i&gt;DOMINIO\Usuario&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Problemas al intentar montar un volumen externo (por ejemplo, mediante NFS).&lt;/li&gt;
&lt;li&gt;Diferentes problemas lanzan un error como este:&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;background-color: #b6d7a8; font-size: 13px; text-align: left; white-space: pre-wrap;&quot;&gt;&quot;Error interacting with configuration file /etc/vmware/esx.conf:   Unlock of ConfigFileLocker failed : Error interacting with configuration file /etc/vmware/esx.conf: I am being asked to delete a .LOCK file that I&#39;m not sure is mine.  This is a bad thing and I am going to fail.  Lock should be released by (0)&quot;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
Como es de esperar cada problema suele estar relacionado con algún servicio que se ha quedado &quot;atontado&quot;. La mayoría de esos servicios no interfieren en la ejecución de las máquinas virtuales por lo que pueden reiniciarse tranquilamente. ¿Que no sabes cuál hay que reiniciar ni cómo? No problemo: los chicos de VMware nos lo han puesto muy fácil.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
La solución&lt;/h4&gt;
&lt;br /&gt;
Afortunadamente los productos de VMware tienen muchos scripts de administración que facilitan enormemente las tareas más comunes. Sólo hay que entrar en modo consola al hipervisor (por ejemplo, mediante SSH) y ejecutar el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;services.sh restart&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
No hace falta hacer ninguna parada de las VMs.</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/3925699255943538459/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/02/reinicio-de-servicios-en-esxi.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3925699255943538459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3925699255943538459'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/02/reinicio-de-servicios-en-esxi.html' title='Reinicio de servicios en ESXi'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-2799008007102165163</id><published>2013-02-10T20:38:00.000+01:00</published><updated>2013-02-18T18:29:44.714+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Active Directory"/><category scheme="http://www.blogger.com/atom/ns#" term="descripción"/><category scheme="http://www.blogger.com/atom/ns#" term="GPO"/><category scheme="http://www.blogger.com/atom/ns#" term="pc"/><category scheme="http://www.blogger.com/atom/ns#" term="script"/><category scheme="http://www.blogger.com/atom/ns#" term="VBscript"/><category scheme="http://www.blogger.com/atom/ns#" term="WMI"/><title type='text'>Conciliar la descripción de los PC con Active Directory</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Si eres uno de esos administradores de sistemas que, como yo, intentas que todos los campos en &lt;a href=&quot;http://es.wikipedia.org/wiki/Active_Directory&quot;&gt;Active Directory&lt;/a&gt; estén lo mejor cumplimentados posible (especialmente si usas algún software de inventario basado en Active Directory), te habrás topado alguna vez con este pequeño inconveniente del que os voy a hablar.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Se trata de la discrepancia entre el campo &quot;Descripción&quot; de la cuenta de equipo en Active Directory y el campo local &quot;Descripción&quot; del propio equipo en sí. Cuando hacemos un &quot;net view&quot; o simplemente examinamos la red desde una estación de trabajo cualquiera, junto al nombre de cada host aparece la descripción del propio equipo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Cambiar dicha descripción (local o remotamente) en cada PC es un trabajo de chinos. Hay que ir uno a uno, o bien hacer un script o archivo de lotes de comandos. Pero esto tendría el inconveniente de que tienen que estar todos encendidos, y además no se actualizarían automáticamente.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Si por otro lado, también queremos tener la descripción detallada en Active Directory... ¿por qué no hacer que la descripción de AD se vuelque automáticamente sobre cada estación? De esta manera tenemos todos los equipos actualizados de manera asíncrona (no los tenemos que encender), sólo tenemos una descripción por lo que no crearemos incongruencias y además tendremos la comodidad de cambiar las descripciones desde la página principal de administración de &quot;Usuarios y equipos de Active Directory&quot;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
La automatización&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Haremos un script que se ejecutará en cada PC durante su arranque, y el propio equipo preguntará a Active Directory por su descripción para a continuación auto-asignársela.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para lanzar el script la manera más eficiente es utilizar la opción de scripts de inicio/apagado de las directivas de grupo del dominio. Para ello creamos un nuevo objeto de directiva (GPO) o bien editamos alguno que esté siendo aplicado a la unidad organizativa donde estén nuestros PCs.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Digamos que hemos llamado al script con el nombre &lt;i&gt;pc_description.vbs&lt;/i&gt;. Sólo tenemos que agregarlo a la directiva según se ve en esta imagen:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5WT8bPeiibG3yx8e3WkEcEKHMQ5GPWHj6aspOF6_D9td5d9ZDy1dumnvIbaywy3mVtREUJ7s07ESe9AF8zlKaD36jK-GZlFbA5fDsjE60jaoutxsaecj8N1fYpbPDCYEBp1Yn7dyLVxqP/s1600/desc_ad01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;475&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5WT8bPeiibG3yx8e3WkEcEKHMQ5GPWHj6aspOF6_D9td5d9ZDy1dumnvIbaywy3mVtREUJ7s07ESe9AF8zlKaD36jK-GZlFbA5fDsjE60jaoutxsaecj8N1fYpbPDCYEBp1Yn7dyLVxqP/s640/desc_ad01.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El script se ejecutará cada vez que el equipo arranque. Si lo preferís, puede hacerse que se ejecute al apagarse el equipo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
El script&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En verdad es un trozo de código bastante sencillo. Los pasos que haremos en este caso son:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Obtener el nombre del host que está ejecutando el script&lt;/li&gt;
&lt;li&gt;Comprobar la conectividad con algún servidor de la red. Esto es necesario para que el script no retrase el arranque del PC en caso de que el equipo esté offline y no tenga conexión al dominio (por ejemplo, un portátil en itinerancia).&lt;/li&gt;
&lt;li&gt;En caso afirmativo, obtenemos el &quot;distinguished name&quot; (DN) de nuestro equipo, y con él interrogamos mediante LDAP al AD para leer el campo &quot;Description&quot; de la cuenta del equipo.&lt;/li&gt;
&lt;li&gt;Modifica la descripción local del PC con los datos obtenidos en el paso anterior.&lt;/li&gt;
&lt;li&gt;Salir del script&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Un ejemplo del código necesario para hacer el script es el que publicamos a continuación:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #202020; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;font-size: x-small; line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;--------------------------------------&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  PC Description &lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  The Debug Machine&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  http://www.debugmachine.com&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   Copyright 2013 José Ángel Morente&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   you may not use this file except in compliance with the License.&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   You may obtain a copy of the License at&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;     http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   Unless required by applicable law or agreed to in writing, software&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   See the License for the specific language governing permissions and&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   limitations under the License.&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;--------------------------------------&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;On&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Error&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Resume&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Next&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Const&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;ADS_SCOPE_SUBTREE&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;2&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strComputer,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strDescription,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strLogonServer&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;CreateObject(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;WScript.Shell&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: #d0d0d0;&quot;&gt;strComputer&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell.ExpandEnvironmentStrings(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;%COMPUTERNAME%&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
&lt;span style=&quot;color: #d0d0d0;&quot;&gt;strLogonServer&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;dc-01.debugmachine.com&quot;&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Comprueba si el equipo %logonserver% tiene conectividad&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;isAlive(strLogonServer,&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;500&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Then&lt;/span&gt; &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;1 ping, espera 500ms&lt;/span&gt;
 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strDescription&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;getComputerDescription&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;LDAP://&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetDN(strComputer))&lt;/span&gt;
 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;setPCDescription&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;,strDescription&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Else&lt;/span&gt;

 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;WScript.Quit&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;
 
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt; &lt;span style=&quot;color: #447fcf;&quot;&gt;getComputerDescription&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(ldapPath)&lt;/span&gt; 
 &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Busca en Active Directory mediante LDAP el campo &quot;Description&quot; de la cuenta&lt;/span&gt;
 &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;del equipo&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objComputer,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objProperty&lt;/span&gt;

 &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;valor por defecto&lt;/span&gt;
 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;getComputerDescription&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;Null&lt;/span&gt; 

 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objComputer&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetObject&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(ldapPath)&lt;/span&gt;

 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Not&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;IsNull(objComputer)&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Then&lt;/span&gt;
  &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objProperty&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objComputer.Get(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Description&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
  &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Not&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;IsNull(objProperty)&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Then&lt;/span&gt;
      &lt;span style=&quot;color: #d0d0d0;&quot;&gt;getComputerDescription&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objProperty&lt;/span&gt;
      &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objProperty&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;Null&lt;/span&gt;
  &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt;
  &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objComputer&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;Null&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt; &lt;span style=&quot;color: #447fcf;&quot;&gt;GetDN&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;(computerName)&lt;/span&gt;

 &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Obtiene el DN (distinguished name) del equipo          &lt;/span&gt;
    &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objRootDSE,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objConnection,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objCommand,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objRecordSet&lt;/span&gt;

    &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objRootDSE&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetObject(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;LDAP://rootDSE&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
    &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objConnection&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;CreateObject(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;ADODB.Connection&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
    
    &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objConnection.Open&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Provider=ADsDSOObject;&quot;&lt;/span&gt;
    &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objCommand&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;CreateObject(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;ADODB.Command&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
    &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objCommand.ActiveConnection&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objConnection&lt;/span&gt;

 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;queryStr&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&#39;LDAP://&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objRootDSE.get(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;defaultNamingContext&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&#39;&quot;&lt;/span&gt;

 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objCommand.CommandText&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Select Name, distinguishedName from &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;queryStr&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; where objectClass=&#39;computer&#39;&quot;&lt;/span&gt;  

 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objCommand.Properties(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Page Size&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;1000&lt;/span&gt;
 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objCommand.Properties(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Timeout&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;30&lt;/span&gt;
 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objCommand.Properties(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Searchscope&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;ADS_SCOPE_SUBTREE&lt;/span&gt;
 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objCommand.Properties(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Cache Results&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;False&lt;/span&gt;
 
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objRecordSet&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objCommand.Execute&lt;/span&gt;
 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objRecordSet.MoveFirst&lt;/span&gt;
 
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Do&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;Until&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objRecordSet.EOF&lt;/span&gt;
  &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;lcase(objRecordSet.Fields(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Name&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;).Value)&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;lcase(computerName)&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Then&lt;/span&gt;
      &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetDN&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objRecordSet.Fields(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;distinguishedName&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
  &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt;
     &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objRecordSet.MoveNext&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Loop&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Sub&lt;/span&gt; &lt;span style=&quot;color: #447fcf;&quot;&gt;setPCDescription&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(computerName,description)&lt;/span&gt;
 &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Configura la desctripción del equipo con la descripción dada&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objOS&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objOS&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetObject(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;computerName&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;\root\cimv2&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;).ExecQuery(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Select * FROM Win32_OperatingSystem&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
    &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;For&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Each&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;object&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;In&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objOS&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;object&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;.Description&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;description&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;object&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;.Put_&lt;/span&gt;
    &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Next&lt;/span&gt; 
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Sub&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt; &lt;span style=&quot;color: #447fcf;&quot;&gt;isAlive&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;(strHost,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;pingsNo,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;msWait)&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objFile,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objFSO,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strDummy,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strTempFile&lt;/span&gt;
 
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objFSO&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;CreateObject(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Scripting.FileSystemObject&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
  
 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strTempFile&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objFSO.GetTempName&lt;/span&gt;
 
 &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;valores por defecto &lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;msWait&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Then&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;msWait&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;750&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;pingsNo&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Then&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;pingsNo&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;2&lt;/span&gt;
 
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Const&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;OpenAsDefault&lt;/span&gt;  &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;2&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Const&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;FailIfNotExist&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Const&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;ReadMode&lt;/span&gt;  &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;1&lt;/span&gt;

 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell.Run&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;%comspec% /c ping -n &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;pingsNo&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; -w &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;msWait&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
    &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strHost&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&amp;gt;&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strTempFile,&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;True&lt;/span&gt;

 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objFile&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objFSO.OpenTextFile(strTempFile,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;ReadMode,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
    &lt;span style=&quot;color: #d0d0d0;&quot;&gt;FailIfNotExist,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;OpenAsDefault)&lt;/span&gt;

 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strDummy&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objFile.ReadAll&lt;/span&gt;
 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objFile.Close&lt;/span&gt;

 &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objFSO.DeleteFile(strTempFile)&lt;/span&gt;

 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Select&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Case&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;InStr(strDummy,&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;TTL=&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
  &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Case&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;
   &lt;span style=&quot;color: #d0d0d0;&quot;&gt;isAlive&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;False&lt;/span&gt;
  &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Case&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Else&lt;/span&gt;
     &lt;span style=&quot;color: #d0d0d0;&quot;&gt;isAlive&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;True&lt;/span&gt;
 &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Select&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/2799008007102165163/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/02/conciliar-la-descripcion-de-los-pc-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/2799008007102165163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/2799008007102165163'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/02/conciliar-la-descripcion-de-los-pc-con.html' title='Conciliar la descripción de los PC con Active Directory'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5WT8bPeiibG3yx8e3WkEcEKHMQ5GPWHj6aspOF6_D9td5d9ZDy1dumnvIbaywy3mVtREUJ7s07ESe9AF8zlKaD36jK-GZlFbA5fDsjE60jaoutxsaecj8N1fYpbPDCYEBp1Yn7dyLVxqP/s72-c/desc_ad01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-5145492068523884960</id><published>2013-02-10T17:16:00.000+01:00</published><updated>2013-02-18T21:56:08.307+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cisco"/><category scheme="http://www.blogger.com/atom/ns#" term="cliente"/><category scheme="http://www.blogger.com/atom/ns#" term="DNS"/><category scheme="http://www.blogger.com/atom/ns#" term="routing"/><category scheme="http://www.blogger.com/atom/ns#" term="script"/><category scheme="http://www.blogger.com/atom/ns#" term="VBscript"/><category scheme="http://www.blogger.com/atom/ns#" term="vpn"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Problemas de DNS con cliente VPN Cisco en Windows</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Si trabajáis con redes virtuales y sistemas Cisco, es probable que alguna vez os encontréis con este problema.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Resulta que cuando un usuario de Windows utiliza el Cisco VPN Client para conectar a la VPN de su empresa, este levanta una interfaz virtual para enrutar el tráfico privado por el IPsec Tunnel creado por el cliente Cisco. Hasta aquí todo correcto y previsible.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El problema viene cuando dicha interfaz virtual toma los DNS que el peer remoto le asigna, y no te dan opción a poner tú los tuyos, ya que estos son &quot;machacados&quot; cada vez que conectas con la VPN. Es fácil configurar cuando se tiene acceso a todos los parámetros de ambos extremos, y en especial cuando tienes la gestión del router/firewall que está actuando como terminador de túneles (típicamente un ASA, un PIX o algún otro chisme cisquero con esas capacidades). Pero en la vida real no suele ser el caso si utilizas un servicio gestionado por compañías como &lt;a href=&quot;http://www.movistar.es/&quot;&gt;Movistar&lt;/a&gt; (cuya flexibilidad en la gestión de la VPN deja mucho que desear).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
¿Qué pasa si no tienes tus DNS? Si tu equipo pertenece a un dominio Active Directory (o alguna otra tecnología dependiente de los DNS internos de la infrastructura de tu grupo) estás vendido por completo. No sólo no podrás resolver nombres de equipos internos (sin hacer la abominable chapuza de añadir nombres al archivo &lt;a href=&quot;http://es.wikipedia.org/wiki/Archivo_hosts&quot;&gt;hosts&lt;/a&gt;, que me consta que aún hay quien lo hace), sino que tendrás otros problemas relacionados con la falta de resolución interna, por ejemplo algo tan básico como la autenticación o la aplicación de directivas de grupo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para colmo, suele producirse un efecto indeseado más: cuando en la LAN del cliente remoto existe un rango de direccionamiento IPv4 utilizado también por la sede remota a la que se pretende llegar por VPN. En este caso, aunque el software de Cisco tiene parámetros para controlar esta circunstancia, la realidad es que siempre termina habiendo problemas.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
La solución&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En este caso ayuda bastante el hecho de que el propio cliente Cisco te permite lanzar un ejecutable arbitrario una vez producida la autenticación remota. Haremos un script que se encargue de lidiar con los problemas anteriormente citados.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como primer requisito es que el usuario que lance el cliente VPN Cisco debe tener permisos locales suficientes para gestionar parámetros de las interfaces de red. Aunque he visto más de un sysadmin cazurro agregar al usuario al grupo de Administradores solamente para que disponga de estos privilegios (¡qué barbaridad!), la manera correcta y elegante de hacer esto es agregar al usuario al grupo &lt;b&gt;Operadores de configuración de red&lt;/b&gt;. Es un grupo local y por tanto lo encontraremos en la ventana de &lt;a href=&quot;http://support.microsoft.com/kb/308423/es&quot;&gt;Administración de equipos&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0peYpReICGSeBE7Oesm8wr_0iy4NGsMy-IAX-aeyHvhyphenhyphenGLlfc61_Inwp941uu0NePmWv9pOjrNH6mS208MVkAbrCfn8ofLHJd7jLHQv6E2Emqf_ps8Npidjcefaaox5xHKmLknNI9vJC_/s1600/ciscovpn01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;278&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0peYpReICGSeBE7Oesm8wr_0iy4NGsMy-IAX-aeyHvhyphenhyphenGLlfc61_Inwp941uu0NePmWv9pOjrNH6mS208MVkAbrCfn8ofLHJd7jLHQv6E2Emqf_ps8Npidjcefaaox5xHKmLknNI9vJC_/s320/ciscovpn01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El siguiente paso es abrir el Cisco VPN Client para indicarle la línea de comandos del script que se ejecutará tras la conexión. Digamos que llamaremos al script &lt;i&gt;&lt;b&gt;vpn.vbs&lt;/b&gt;&lt;/i&gt;&amp;nbsp;y que para no complicarnos mucho la vida, lo copiaremos a la propia ruta del ejecutable de Cisco. El script lo vamos a hacer en VBscript, aunque sería realmente fácil portarlo a JScript. En cualquier caso, lo ejecutaremos con CSCRIPT para poder mostrar mensajes en pantalla sin que nos aparezcan continuos &quot;pop-ups&quot;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Así la cosa, la ruta será la siguiente:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;pre&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: small;&quot;&gt;C:\WINDOWS\System32\cscript.exe &quot;C:\Archivos de programa\Cisco Systems\VPN Client\VPN.vbs&quot;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Que tendremos que especificar en la opción del menú correspondiente:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFjFmdOfBdD9l8msKHMg3I9jkSu9Dm18t7l1e37ATvX_IxfvyDw9PceASR6iwUku5gMdfl9bO85eM6eOf56_KQSFZBI52nQFRs22OYvicxJZO1kjHNS2OuOfTcPcxlP7kERZtjYmSxk8NA/s1600/ciscovpn02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;71&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFjFmdOfBdD9l8msKHMg3I9jkSu9Dm18t7l1e37ATvX_IxfvyDw9PceASR6iwUku5gMdfl9bO85eM6eOf56_KQSFZBI52nQFRs22OYvicxJZO1kjHNS2OuOfTcPcxlP7kERZtjYmSxk8NA/s320/ciscovpn02.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwVAcPpnu3HVO4F49gffeLx9atFCu8J6JkzlUE2zVcbN13HVm9jNcTynD9H_yXk8CuXzngcXPWGeDAI_OF-n_2kgNW8Ox-__YWwRyzwLDZ0hzEM9AFREoB_2-7opstgw2FM_NJgcYAlo9a/s1600/ciscovpn03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwVAcPpnu3HVO4F49gffeLx9atFCu8J6JkzlUE2zVcbN13HVm9jNcTynD9H_yXk8CuXzngcXPWGeDAI_OF-n_2kgNW8Ox-__YWwRyzwLDZ0hzEM9AFREoB_2-7opstgw2FM_NJgcYAlo9a/s320/ciscovpn03.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
(Nota: es recomendable calcular primero las partes variables de la línea anterior usando variables de entorno para garantizar la compatibilidad: %WINDIR% para el directorio real del sistema, y %PROGRAMFILES% para el subdirectorio de archivos de programa).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez preconfigurado todo, pasamos al meollo del asunto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
El script&lt;/h4&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Nuestro script hará las siguientes tareas de manera automatizada:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Esperar a que la interfaz virtual esté levantada&lt;/li&gt;
&lt;li&gt;Obtener la dirección IP de dicha interfaz&lt;/li&gt;
&lt;li&gt;Agregar una ruta dinámica para llegar a la sede remota aún cuando el rango coincida con el local&lt;/li&gt;
&lt;li&gt;Borrar los DNS asignados por el extremo remoto del túnel y añadir los de nuestra compañía&lt;/li&gt;
&lt;li&gt;Abandonar el script&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Un ejemplo del código de dicho script es el siguiente (adaptadlo a los parámetros de vuestro escenario).&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #202020; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;&quot;&gt;
&lt;pre style=&quot;font-size: x-small; line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;----------------------------------------------------------------------------&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Configurador de red para clientes CISCO VPN&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  The Debug Machine&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  http://www.debugmachine.com&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   Copyright 2013 José Ángel Morente&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   you may not use this file except in compliance with the License.&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   You may obtain a copy of the License at&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;     http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   Unless required by applicable law or agreed to in writing, software&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   See the License for the specific language governing permissions and&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;   limitations under the License.&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  FUNCIONAMIENTO:&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Las conexiones VPN CISCO, tal y como están configuradas por Telefónica, dan&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  problemas de rutas a la red 192.168.1.0 cuando coincide con la red local, &lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  así como problemas de resolución DNS (imposibilita resolver los objetos de &lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  sistema con los DNS propios).&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Este configurador ha de ejecutarse durante el proceso de conexión (usando la&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  opción &quot;Application Launcher&quot; del cliente VPN CISCO. El programa espera&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  hasta encontrar levantada la interfaz &quot;CVirtA&quot; (nombre interno de la conexión&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Cisco VPN). Una vez levantada, halla la dirección IP, agrega una ruta para&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  forzar el tráfico de la 192.168.1.0 a través de la interfaz virtual, y &lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  finalmente selecciona los DNS internos de la compañía para que todas las&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  resoluciones se hagan a través de ahí&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  El script tiene varios parámetros configurables en forma de constantes.&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;-----------------------------------------------------------------------------&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Option&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;Explicit&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;CONFIGURACIÓN DEL SCRIPT&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Const&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;NICServiceName&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;CVirtA&quot;&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Const&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strComputer&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;.&quot;&lt;/span&gt;  &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Equipo local&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Const&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;remoteRoute&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;192.168.1.0&quot;&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Const&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;remoteMask&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;255.255.255.0&quot;&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Const&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;DNSservers&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;192.168.1.11,192.168.1.12,192.168.1.13&quot;&lt;/span&gt;


&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;--------------MAIN&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt;   &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strIPAddress,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;NICIndex&lt;/span&gt;

&lt;span style=&quot;color: #d0d0d0;&quot;&gt;WScript.Echo&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Esperando a que la interfaz &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;NICServiceName&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; esté lista...&quot;&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Obtiene dirección IP y la muestra&lt;/span&gt;
&lt;span style=&quot;color: #d0d0d0;&quot;&gt;strIPAddress&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetVPNIPAddress&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(strComputer,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;NICServiceName)&lt;/span&gt;
&lt;span style=&quot;color: #d0d0d0;&quot;&gt;WScript.Echo&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Dirección IP detectada: &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strIPAddress&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Crea la ruta&lt;/span&gt;
&lt;span style=&quot;color: #d0d0d0;&quot;&gt;WScript.Echo&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Agregando ruta de sede remota a la interfaz &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strIPAddress&lt;/span&gt;
&lt;span style=&quot;color: #d0d0d0;&quot;&gt;AddRouteIP4&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strComputer,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;remoteRoute,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;remoteMask,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strIPAddress,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;NICIndex,&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;22&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Configura los DNS&lt;/span&gt;
&lt;span style=&quot;color: #d0d0d0;&quot;&gt;WScript.Echo&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Configurando los DNS de la interfaz &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strIPAddress&lt;/span&gt;
&lt;span style=&quot;color: #d0d0d0;&quot;&gt;SetDNS&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;NICServiceName,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;Split&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(DNSservers,&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Salir de la aplicación&lt;/span&gt;
&lt;span style=&quot;color: #d0d0d0;&quot;&gt;WScript.Quit&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;--------------DECLARACION FUNCIONES&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt; &lt;span style=&quot;color: #447fcf;&quot;&gt;GetVPNIPAddress&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(computerName,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;interfaceServiceName)&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;------------------------------------------------------------&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Queda en espera hasta que se levante la interfaz de Cisco y &lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  devuelve su IP&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Entrada: &lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;       computerName            Nombre del equipo (&quot;.&quot; para el equipo local)&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;       interfaceServiceName    Nombre de servicio de la interfaz&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Salida:  &lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;       dirección IP en formato String&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;------------------------------------------------------------&lt;/span&gt;

        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strIPAddress&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objWMI,colInterfaces,objInterface&lt;/span&gt;

        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objWMI&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetObject(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;winmgmts:&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
                            &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;{impersonationLevel=impersonate}!\\&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;computerName&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
                            &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;\root\cimv2&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;      &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Crea conexión local a la WMI&lt;/span&gt;

        
        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;obtiene todas las interfaces llamadas deseadas y que estén activas&lt;/span&gt;
        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;la interface de CISCO aparece como &quot;IPenabled=false&quot; hasta que no tiene una IP asignada&lt;/span&gt;
        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;por tanto hacemos un bucle hasta que dicha interface sea obtenida en la consulta, lo cuál significa&lt;/span&gt;
        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;que ya tiene una IP (IPenabled=true)&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Do&lt;/span&gt;              
         &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;colInterfaces&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objWMI.ExecQuery&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
             &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Select * From Win32_NetworkAdapterConfiguration where ServiceName=&quot;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;interfaceServiceName&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
                &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&quot;&quot; and IPEnabled=true&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;        
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Loop&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;While&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;colInterfaces.count=&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;
        
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;For&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;each&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objInterface&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;colInterfaces&lt;/span&gt;
                        &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strIPAddress&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;Join(objInterface.IPAddress,&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
                        &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetVPNIPAddress&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strIPAddress&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Next&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Sub&lt;/span&gt; &lt;span style=&quot;color: #447fcf;&quot;&gt;AddRouteIP4&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(computerName,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;route,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;mask,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;gateway,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;InterfaceIndex,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;metric)&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;-------------------------------------------------------------------------&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Agrega una ruta dinámica en la tabla de rutas IPv4&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Aunque esta función podría haber sido realizada mediante WMI, para evitar&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  problemas de privilegios de usuario lo haremos ejecutando el comando &quot;route&quot;&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  de Windows a través de una shell.&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Entrada: computerName&lt;/span&gt;


        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD&lt;/span&gt;

        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;CreateObject&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;WScript.Shell&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;   
        &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;route add &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;route&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; mask &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;mask&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;gateway&lt;/span&gt; 
        
        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Parámetros &quot;metric&quot; e &quot;index&quot; pueden ser &quot;null&quot;&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;metric&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;Null&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Then&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD&lt;/span&gt;  &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; metric &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;metric&lt;/span&gt; 
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;InterfaceIndex&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;Null&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Then&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; if &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;InterfaceIndex&lt;/span&gt; 
        
        &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell.Exec(strCMD)&lt;/span&gt;
        
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Sub&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Sub&lt;/span&gt; &lt;span style=&quot;color: #447fcf;&quot;&gt;SetDNS&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(interfaceServiceName,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;DNSlist)&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;i,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strNIC&lt;/span&gt;
        
        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Obtiene el nombre de la interfaz&lt;/span&gt;
        &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strNIC&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetInterfaceNamebyServiceName&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(interfaceServiceName)&lt;/span&gt;

        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;CreateObject&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;WScript.shell&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
        
        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Borra las DNS existentes&lt;/span&gt;
        &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;netsh interface ip delete dns name=&quot;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strNIC&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&quot;&quot; all&quot;&lt;/span&gt;
        &lt;span style=&quot;color: #d0d0d0;&quot;&gt;WScript.Echo&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;vbTab&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Borrando DNS actualmente asignados&quot;&lt;/span&gt;
        &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell.Run&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD,&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;True&lt;/span&gt; &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;ventana oculta y espera a que retorne&lt;/span&gt;
        
        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Añade las demás DNS&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;For&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;i&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;To&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;UBound(DNSlist)&lt;/span&gt;
                &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Select&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Case&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;i+&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;1&lt;/span&gt;
                        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Comando DNS primaria&lt;/span&gt;
                        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Case&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;:&lt;/span&gt;  &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;netsh interface ip set dns name=&quot;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strNIC&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&quot;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
                                                  &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; source=static addr=&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;DNSlist(i)&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; register=PRIMARY&quot;&lt;/span&gt;
                        &lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;Comando DNS secundarias                                                  &lt;/span&gt;
                        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Case&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Else&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;netsh interface ip add dns name=&quot;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strNIC&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&quot;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt; 
                                                            &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; addr=&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;DNSlist(i)&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot; index=&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;i+&lt;/span&gt;&lt;span style=&quot;color: #3677a9;&quot;&gt;1&lt;/span&gt;
                &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Select&lt;/span&gt;
                &lt;span style=&quot;color: #d0d0d0;&quot;&gt;WScript.Echo&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;vbTab&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Agregando DNS: &quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;DNSlist(i)&lt;/span&gt;
                &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objShell.Run&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strCMD,&lt;/span&gt; &lt;span style=&quot;color: #3677a9;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;True&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Next&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Sub&lt;/span&gt;

&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  Obtiene el nombre de la interfaz de red&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;  a partir del &quot;service name&quot; (CVirtA)&lt;/span&gt;
&lt;span style=&quot;color: #999999; font-style: italic;&quot;&gt;&#39;--------------------------------------------&lt;/span&gt;
&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt; &lt;span style=&quot;color: #447fcf;&quot;&gt;GetInterfaceNamebyServiceName&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(InterfaceServiceName)&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Dim&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objWMI,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;colInterfaces,&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objInterface&lt;/span&gt;
                
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objWMI&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetObject(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;winmgmts:&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
            &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;{impersonationLevel=Impersonate}!\\&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;strComputer&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;\root\cimv2&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;

        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Set&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;colInterfaces&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objWMI.ExecQuery&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
            &lt;span style=&quot;color: #d0d0d0;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;Select * From Win32_NetworkAdapter Where ServiceName=&quot;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;interfaceServiceName&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;_&lt;/span&gt;
                        &lt;span style=&quot;color: #ed9d13;&quot;&gt;&quot;&quot;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #d0d0d0;&quot;&gt;)&lt;/span&gt;
        
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;colInterfaces.count&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Then&lt;/span&gt;
                &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;For&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Each&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objInterface&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;colInterfaces&lt;/span&gt;
                    &lt;span style=&quot;color: #d0d0d0;&quot;&gt;GetInterfaceNamebyServiceName&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #d0d0d0;&quot;&gt;objInterface.NetConnectionId&lt;/span&gt;
                &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Next&lt;/span&gt;
        &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;If&lt;/span&gt;

&lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;End&lt;/span&gt; &lt;span style=&quot;color: #6ab825; font-weight: bold;&quot;&gt;Function&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Espero os haya servido de ayuda.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Saludos&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/5145492068523884960/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/02/problemas-de-dns-con-cliente-vpn-cisco.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5145492068523884960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5145492068523884960'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/02/problemas-de-dns-con-cliente-vpn-cisco.html' title='Problemas de DNS con cliente VPN Cisco en Windows'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0peYpReICGSeBE7Oesm8wr_0iy4NGsMy-IAX-aeyHvhyphenhyphenGLlfc61_Inwp941uu0NePmWv9pOjrNH6mS208MVkAbrCfn8ofLHJd7jLHQv6E2Emqf_ps8Npidjcefaaox5xHKmLknNI9vJC_/s72-c/ciscovpn01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-2337646717272450692</id><published>2013-02-10T11:49:00.000+01:00</published><updated>2013-02-10T11:49:52.952+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blog"/><category scheme="http://www.blogger.com/atom/ns#" term="blogger"/><title type='text'>Cambio de &quot;look&quot;</title><content type='html'>Buenos días,&lt;br /&gt;
&lt;br /&gt;
en lo sucesivo voy a intentar cuidar un poco más este blog que tenía un poco olvidado y a empezar a alimentarlo con más contenidos y mejores.&lt;br /&gt;
&lt;br /&gt;
Mientras tanto y como anticipo he hecho un ligero cambio de look &amp;amp; feel (título, colores, etc.) para renovarlo un poquitín.&lt;br /&gt;
&lt;br /&gt;
Además, he cambiado la dirección principal, que antes pasa a ser &lt;a href=&quot;http://www.debugmachine.com/&quot;&gt;http://www.debugmachine.com&lt;/a&gt;&amp;nbsp;en vez de la habitual de Blogger (&lt;a href=&quot;http://debugmachine.blogspot.com/&quot;&gt;http://debugmachine.blogspot.com&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Nos vemos pronto.</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/2337646717272450692/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/02/cambio-de-look.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/2337646717272450692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/2337646717272450692'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/02/cambio-de-look.html' title='Cambio de &quot;look&quot;'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-3987850434065117123</id><published>2013-02-04T19:30:00.000+01:00</published><updated>2013-02-18T21:57:51.074+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="error"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet"/><category scheme="http://www.blogger.com/atom/ns#" term="Internet Explorer"/><category scheme="http://www.blogger.com/atom/ns#" term="malware"/><category scheme="http://www.blogger.com/atom/ns#" term="proxy"/><category scheme="http://www.blogger.com/atom/ns#" term="spyware"/><category scheme="http://www.blogger.com/atom/ns#" term="virus"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Problemas de acceso a la WEB en Windows. Los malwares proxy</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Existe un tipo de &lt;a href=&quot;http://es.wikipedia.org/wiki/Malware&quot;&gt;malwares&lt;/a&gt;, virus, etc. pululando por los sistemas Windows que provocan que los navegadores Internet Explorer, &lt;a href=&quot;http://chrome.google.com/&quot;&gt;Google Chrome&lt;/a&gt; y &lt;a href=&quot;http://www.apple.com/es/safari/&quot;&gt;Safari&lt;/a&gt; dejen de funcionar (aunque no así en &lt;a href=&quot;http://www.getfirefox.com/&quot;&gt;Mozilla Firefox&lt;/a&gt;, salvo que este esté configurado para usar la configuración de proxy del sistema).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este tipo de bichos están diseñados para obtener toda la información posible acerca de nuestros hábitos de navegación con diferentes propósitos: spyware, robo de contraseñas no seguras, etc. El ataque que provocan es de tipo &lt;a href=&quot;http://es.wikipedia.org/wiki/Ataque_Man-in-the-middle&quot;&gt;man-in-the-middle&lt;/a&gt;, aprovechando la configuración de &lt;a href=&quot;http://es.wikipedia.org/wiki/Proxy&quot;&gt;proxy&lt;/a&gt; de usuario de Windows la cuál es fácilmente manipulable mediante una simple escritura en el registro.&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El programa malicioso configura nuestro sistema para que este navegue a través de un proxy en lugar de hacerlo de manera directa. Pero no usa un proxy real, sino que él mismo hace de proxy en Windows en algún puerto TCP aleatorio poco común, y redirigiendo todas las peticiones a la IP localhost (&lt;i&gt;127.0.0.1&lt;/i&gt;) que identifica inequívocamente al sistema infectado.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Podemos tener al parásito durante mucho tiempo hasta que nos demos cuenta. Pero, ¿qué pasa el día que actualizas el antivirus y el bicho es &quot;cazado&quot;? Pues que el falso proxy deja de funcionar, pero el sistema sigue configurado para salir a Internet a través del mismo, lo que causa el aparente síntoma de que no tenemos Internet (aunque en realidad pocos programas se hacen cargo de este ajuste, a excepción de los navegadores web).&lt;/div&gt;
&lt;br /&gt;
Los síntomas básicos de este problema son:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Si haces &quot;&lt;a href=&quot;http://es.wikipedia.org/wiki/Ping&quot;&gt;ping&lt;/a&gt;&quot; a una dirección de Internet bien conocida, ésta responde perfectamente.&lt;/li&gt;
&lt;li&gt;Si intentas abrir una WEB con Internet Explorer, aparece un error de conexión, pero no así con Mozilla Firefox.&lt;/li&gt;
&lt;li&gt;Otros programas dependientes de Internet tales como &lt;a href=&quot;http://www.skype.com/intl/es-es/home&quot;&gt;Skype&lt;/a&gt; funcionan correctamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Si es así, es probable que hayamos tenido uno de estos parásitos infectando nuestro sistema y el antivirus lo ha eliminado sin restituir la configuración de proxy.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
La solución&lt;/h4&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Es tan sencillo como reconfigurar manualmente la configuración del proxy de Windows. La forma más fácil (común a Windows 200x, Windows XP y Windows 7) es ir a Panel de Control y seleccionar &quot;Opciones de Internet&quot;.&lt;/div&gt;
&lt;br /&gt;
En esta ventana seleccionamos la pestaña &quot;Conexiones&quot; y después &quot;Configuración de &lt;u&gt;L&lt;/u&gt;AN&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6eHhyKmykEuAeY5ZQlfpXGmYuxs3keKxm6yPXfn7gzfGYyq7zJmwoxz8Gkun50kQDwP_nTO1-QYIPnMLAUYJXtXbTuRdS0Zy9Hba0Ino0tP1Qqafy4VqhxbFRWgAUmRBeHe-3lVT2o5BZ/s1600/debug01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6eHhyKmykEuAeY5ZQlfpXGmYuxs3keKxm6yPXfn7gzfGYyq7zJmwoxz8Gkun50kQDwP_nTO1-QYIPnMLAUYJXtXbTuRdS0Zy9Hba0Ino0tP1Qqafy4VqhxbFRWgAUmRBeHe-3lVT2o5BZ/s320/debug01.png&quot; width=&quot;247&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5G-dyu5BI5-3MtM4EfkWDW1uysWZznXdC07EKmOtxHLwJI_zKVNWMuuB00GX62dGyxwDB7aImvoeCDUhjMoqJZYtVA8KDDOq42jkwktH4-jClTu0TUwv8Uki54wp-GQ0a86vwNBMTJZG4/s1600/debug01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En la nueva ventana que se nos abrirá, tenemos que localizar las opciones de configuración de Proxy y desmarcar la casilla &quot;Usar servidor proxy para LAN...&quot;, así como borrar los campos &quot;Dirección&quot; y &quot;Puerto&quot;, que como observaremos, están rellenos con los datos proporcionados por el virus para forzar que todas las conexiones pasen a través de él:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfxLpEu4OMgr5x7sO9byAanfeuMq7B0HhfYajpovO46lm4H_1A2rRqTbWtRnA_hUaQ1UObIplNOvxe2iFjlykuVpYTwxGuKdQnrkYrHn0AEETt2k9IcIIL5B2e6yyl0xQgKh4RGfsLd2hE/s1600/debug02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;280&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfxLpEu4OMgr5x7sO9byAanfeuMq7B0HhfYajpovO46lm4H_1A2rRqTbWtRnA_hUaQ1UObIplNOvxe2iFjlykuVpYTwxGuKdQnrkYrHn0AEETt2k9IcIIL5B2e6yyl0xQgKh4RGfsLd2hE/s320/debug02.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Puede ocurrir que se trate de nuestro PC de trabajo, y el malnacido del sysadmin de la compañía nos tenga bloqueado el acceso a esta ventana para así evitar que toquemos donde no debemos. En ese caso el método a seguir es otro. El sistema de Directivas de Grupo de Windows permite en efecto bloquearnos esta ventana, pero está tan mal diseñado que no establece una seguridad real sobre el objeto final del registro que se modifica para configurar el proxy, por lo que basta con armarnos con el &lt;a href=&quot;http://es.wikipedia.org/wiki/Registro_de_Windows&quot;&gt;Editor de Registro&lt;/a&gt; (alias &lt;b&gt;regedit.exe&lt;/b&gt;) y hacer los siguientes cambios:&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;En la clave &lt;i&gt;HKCU\Software\Microsoft\Windows\Currentversion\Internet Settings\&lt;/i&gt; localizamos el valor &quot;&lt;b&gt;Proxyenable&lt;/b&gt;&quot;, y lo mofidicamos para que contenga como dato: &lt;b&gt;&quot;0&lt;/b&gt;&quot;.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;En la misma clave anterior, buscamos el valor &quot;&lt;b&gt;ProxyServer&lt;/b&gt;&quot; y borramos su contenido (que estará indicando algo similar a lo de antes, &lt;i&gt;127.0.0.1:58887&lt;/i&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ni que decir tiene que si en condiciones normales nosotros tenemos configurado un proxy para la salida a Internet, no hay que borrar los valores anteriores, sino sustituirlos por los nuestros.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/3987850434065117123/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/02/problemas-de-acceso-la-web-en-windows.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3987850434065117123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3987850434065117123'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/02/problemas-de-acceso-la-web-en-windows.html' title='Problemas de acceso a la WEB en Windows. Los malwares proxy'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6eHhyKmykEuAeY5ZQlfpXGmYuxs3keKxm6yPXfn7gzfGYyq7zJmwoxz8Gkun50kQDwP_nTO1-QYIPnMLAUYJXtXbTuRdS0Zy9Hba0Ino0tP1Qqafy4VqhxbFRWgAUmRBeHe-3lVT2o5BZ/s72-c/debug01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-3476246749688921133</id><published>2013-01-31T11:45:00.002+01:00</published><updated>2013-02-18T21:59:36.381+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="converter"/><category scheme="http://www.blogger.com/atom/ns#" term="error"/><category scheme="http://www.blogger.com/atom/ns#" term="virtualización"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><category scheme="http://www.blogger.com/atom/ns#" term="vSphere"/><title type='text'>Errores de VMware vCenter Converter Standalone</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Quizás la mejor solución de virtualización del mundo es VMware, producto amplio, rico y complejo donde lo haya, y piedra angular de lo que hoy llamamos el Cloud Computing.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Aunque su precio es elevado (y vale lo que cuesta), VMware nos ofrece una versión gratuita de su poderoso &lt;a href=&quot;http://www.vmware.com/products/vsphere-hypervisor/overview.html&quot;&gt;VMware vSphere&lt;/a&gt; cuyas prestaciones mínimas son de por sí apabullantes. En esta versión gratuita no se incluye la poderosa herramienta VMware vCenter que permite gestionar poderosas infrastructuras de servidores virtuales y hosts, pero sí nos dan dos herramientas en versión individual que nos hacen el apaño: el VMware vSphere Client y el &lt;a href=&quot;https://my.vmware.com/web/vmware/info/slug/infrastructure_operations_management/vmware_vcenter_converter_standalone/5_0&quot;&gt;VMware vCenter Converter Standalone&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este último es fundamental para virtualizar máquinas físicas, convertir máquinas virtuales entre formatos, o transferir máquinas virtuales de un host ESXi a otro distinto... cuando funciona. A veces da errores extraños durante el proceso de conversión y te dan muy poca información en el visor para solucionarlo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El error más frecuente es este:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;background-color: #fff2cc;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; padding-top: 300px;&quot;&gt;&quot;Cannot query source HW info&quot;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;
La solución&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
Esto es debido a alguna operación anterior que no salió del todo exitosa. VMware utiliza archivos de control de bloqueos con la &lt;b&gt;extensión &lt;i&gt;.lck&lt;/i&gt;&lt;/b&gt;, normalmente en la misma ubicación de la máquina a convertir &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La solución es tan simple como eliminar tranquilamente ese fichero y reintentar de nuevo la conversión.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/3476246749688921133/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/01/errores-de-vmware-vcenter-converter.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3476246749688921133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3476246749688921133'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/01/errores-de-vmware-vcenter-converter.html' title='Errores de VMware vCenter Converter Standalone'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-3171251605628741943</id><published>2013-01-30T19:00:00.000+01:00</published><updated>2013-02-18T22:02:50.409+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ESXi"/><category scheme="http://www.blogger.com/atom/ns#" term="ethernet"/><category scheme="http://www.blogger.com/atom/ns#" term="Fedora"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="VMware"/><title type='text'>Identificación de interfaces de red en Linux bajo VMware</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Hoy en día, y aunque pareciese poco concebible hace pocos años, sería raro estar escribiendo sobre administrar un sistema operativo &lt;a href=&quot;http://www.linux.org/&quot;&gt;Linux&lt;/a&gt; corriendo sobre un servidor físico; la virtualización ha pasado de ser una opción a mirar de reojo y desde la desconfianza a convertirse en prácticamente la única manera eficiente de montar un sistema corporativo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
VMware es un sistema robusto, maravilloso y eficiente. No obstante y pese a su excelente transparencia y múltiples ventajas, a veces surge algún pequeño inconveniente de muy fácil solución pero que nos puede tener entretenidos durante horas. Me ocurrió en cierta ocasión que tuve que clonar una máquina virtual corriendo una distribución Fedora (entiendo que esto os puede ocurrir con otras muchas distribuciones, especialmente todas las de &quot;sabor RedHat&quot; como CentOS, Fedora, Scientific Linux, etc.).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La máquina clonada en este escenario va a presentar con casi toda seguridad problemas para reconocer correctamente las interfaces ethernet (eth1, eth2...) debido a que al clonar la máquina, VMware asigna nuevas direcciones &lt;a href=&quot;http://es.wikipedia.org/wiki/Direcci%C3%B3n_MAC&quot;&gt;MAC&lt;/a&gt; a las interfaces virtuales. Esto es así para garantizar que cada interfaz sigue teniendo un identificador unívoco dentro de cualquier red, física o virtual.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Cabría esperar que en ese caso, el OS simplemente ignoraría las interfaces de origen y detectaría unas nuevas interfaces, bien automáticamente, o bien tras ejecutar un &lt;b&gt;modprobe pcnet32&lt;/b&gt; (por ejemplo etc3, etc4...) pero en la práctica no siempre es tan fácil, pues estas nuevas interfaces quizás no aparezcan con la herramienta &lt;b&gt;system-config-network&lt;/b&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;
Pasos para la solución rápida&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Hay muchas maneras de volver a arreglar esto, pero la manera que me parece más rápida y directa es la siguiente:&lt;/div&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Justo tras clonar la máquina, y una vez preparada para su arranque, obtenemos la nueva dirección MAC de las interfaces virtuales de red de VMware. En el caso de ESXi, seleccionamos la máquina a clonar y hacemos right-click y abrimos la opción &quot;Edit settings...&quot;. Seleccionamos la interfaz de red y apuntamos la dirección MAC: &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjJEWtBejF5pftPhvlKRpOHq_AeWL2aLfgAI7tkG4c7e_Nm27pMwSC_uze2U5zpBhGuBGkCY2Y6gR7MwiyltGMvCEqa989wh4vrN1CT1qZbo8TQUsW_Uji30oet0EI5p_C4H0G1P_hAqtp/s1600/debug01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;272&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjJEWtBejF5pftPhvlKRpOHq_AeWL2aLfgAI7tkG4c7e_Nm27pMwSC_uze2U5zpBhGuBGkCY2Y6gR7MwiyltGMvCEqa989wh4vrN1CT1qZbo8TQUsW_Uji30oet0EI5p_C4H0G1P_hAqtp/s400/debug01.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Editamos el archivo &lt;b&gt;/etc/udev/rules.d/70-persistent-net.rules&lt;/b&gt; y donde aparece la antigua MAC, ponemos la nueva y guardamos:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH5jOTi5K1ZDbXWZq2YhV14-IsPD_bD4oU0sQIjBxz58oi4ReKphpXOAiB4ataK5_TZE_2N7los6JwCR3iAtyXltq_xVlKIsklLGSUG9IbGL-enraYPHBU5A4d2ZYj2p58iCsfiXNVSO__/s1600/debug02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;110&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgH5jOTi5K1ZDbXWZq2YhV14-IsPD_bD4oU0sQIjBxz58oi4ReKphpXOAiB4ataK5_TZE_2N7los6JwCR3iAtyXltq_xVlKIsklLGSUG9IbGL-enraYPHBU5A4d2ZYj2p58iCsfiXNVSO__/s400/debug02.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoG3ODrFZGAF8L0pR6dHEyl_AI6yZFa_1a7-sH-fBpbHdQi0hMxQvppfgD8QCFiWmRSuiLA-23na5_nmHSNXaLFE9WAjaJBnNlOonphWDBebnVH6OJG-NIE33ISOLs1TQIGNtoS2p-mUh-/s1600/debug02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span id=&quot;goog_118069872&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_118069873&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;En el subdirectorio &lt;b&gt;/etc/sysconfig/network-scripts/&lt;/b&gt; buscamos los scripts de configuración de cada interfaz eth. Si la interfaz se llama &lt;b&gt;eth0&lt;/b&gt;, el script será &lt;b&gt;ifcfg-eth0&lt;/b&gt;. Modificamos también con la nueva MAC y guardamos cambios:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8etu-8XIe1brSL_RdK4VoSd1UNpi-5vF0f9AoSjsP2xURqLATOllrYwJlxls7qZLphQMPD9lOfVCnXIkwV1uz3vqeDKoPEr83bGvChAyyq0NeTDN_a1_65vRmTZ_Ss_D127IFtjE-8Csp/s1600/debug03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;207&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8etu-8XIe1brSL_RdK4VoSd1UNpi-5vF0f9AoSjsP2xURqLATOllrYwJlxls7qZLphQMPD9lOfVCnXIkwV1uz3vqeDKoPEr83bGvChAyyq0NeTDN_a1_65vRmTZ_Ss_D127IFtjE-8Csp/s320/debug03.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Reiniciamos el servicio de red o bien hacemos un reboot completo de la máquina virtual. Una vez arrancado deberíamos de tener las mismas interfaces ethernet de la máquina original, con los mismos nombres de dispositivo y funcionando perfectamente.&lt;/li&gt;
&lt;/ol&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/3171251605628741943/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2013/01/identificacion-de-interfaces-de-red-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3171251605628741943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3171251605628741943'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2013/01/identificacion-de-interfaces-de-red-en.html' title='Identificación de interfaces de red en Linux bajo VMware'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjJEWtBejF5pftPhvlKRpOHq_AeWL2aLfgAI7tkG4c7e_Nm27pMwSC_uze2U5zpBhGuBGkCY2Y6gR7MwiyltGMvCEqa989wh4vrN1CT1qZbo8TQUsW_Uji30oet0EI5p_C4H0G1P_hAqtp/s72-c/debug01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-6142685033702187839</id><published>2011-06-26T16:20:00.000+02:00</published><updated>2019-09-18T16:05:43.443+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Active Directory"/><category scheme="http://www.blogger.com/atom/ns#" term="correo"/><category scheme="http://www.blogger.com/atom/ns#" term="Exchange"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Apps"/><category scheme="http://www.blogger.com/atom/ns#" term="IMAP"/><category scheme="http://www.blogger.com/atom/ns#" term="LDAP"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenLDAP"/><category scheme="http://www.blogger.com/atom/ns#" term="Outlook"/><title type='text'>Ahorro de costes con Google Apps (III). Bye, bye, Exchange. Bienvenido, Mr. LDAP</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://debugmachine.blogspot.com/2010/04/ahorro-de-costes-con-google-apps-ii.html&quot;&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; Anterior&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En los anteriores artículos vimos cómo configurar nuestro dominio para ser usado con Google Apps y aprendimos a hacer unos ajustes básicos. Ahora ya llegado la hora de configurar nuestras propias aplicaciones con el fin de sustituir el servicio Exchange en nuestra compañía.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
De las principales ventajas del Exchange, hay algunas que podemos replicar casi de manera inmediata con lo visto hasta ahora. La primera y más característica de este tipo de servidor: la opción de usar una &quot;Libreta Global de direcciones&quot; de la compañía.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot;&gt;&lt;/script&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:block; text-align:center;&quot;
     data-ad-layout=&quot;in-article&quot;
     data-ad-format=&quot;fluid&quot;
     data-ad-client=&quot;ca-pub-6913768317745308&quot;
     data-ad-slot=&quot;5214885235&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para poder seguir usando esto, realmente nunca habríamos necesitado un Exchange, ya que éste lo único que hace es mostrarnos una vista de las direcciones que tenemos dadas de alta en nuestro dominio Active Directory. Como todo el mundo sabe, el Active Directory no es nada especialmente nuevo ni mucho menos inventado por Microsoft; es en realidad una (otra) implementación del estándar abierto LDAP (Lightweight directory access protocol).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El directorio de equipos, grupos, carpetas y usuarios puede estar basado en cualquier servidor Windows, Netware o Linux que tengan cualquier implementación de LDAP (por ejemplo OpenLDAP).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Mediante el protocolo LDAP podemos acceder y manipular absolutamente todos los datos necesarios para, entre otras cosas, mantener al día nuestra libreta global de direcciones (incluyendo listas de distribución), de una manera casi idéntica a como lo habríamos realizado en un Exchange.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Dado que estos artículos están orientados especialmente a aquellos que desean desprenderse de las garras de Microsoft, enfocaré el desarrollo del tema sobre la base de un directorio Active Directory característico de sistemas operativos Windows Server con el que sin duda estarán familiarizados. No obstante, todo será aplicable de manera muy similar a cualquier otra implementación de LDAP en sistemas basados en Unix o bien en Netware (cuya implementación LDAP es quizás mi favorita).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h2&gt;
PRIMEROS PASOS. ORGANIZANDO EL DIRECTORIO&lt;/h2&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Antes de nada, tenemos que escoger un nombre de dominio para nuestra compañía ficticia. En este caso será &lt;b&gt;debugmachine.local&lt;/b&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para tener un directorio cuya organización facilite nuestra interacción vía LDAP, deberemos tener en cuenta un detalle diferenciador respecto de cómo se gestionan los usuarios en MS Exchange. Cualquier administrador familiarizado con Exchange conoce la opción avanzada de &quot;No mostrar en las listas de direcciones de Exchange&quot;. Dicha opción, muy útil para ocultar un usuario que ha causado baja en la compañía, no la tendremos cuando estemos administrando el directorio directamente por LDAP.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una forma de solventar esta diferencia es estructurar las unidades organizativas de tal modo que siempre tengamos un contenedor en un nivel anterior a la unidad organizativa que contiene a todos los usuarios activos. Esta última unidad será siempre considerada como la rama &quot;raíz&quot; al hacer búsquedas, por lo que siempre tendremos un contenedor donde colocar los usuarios que queramos hacer desaparecer de las listas.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para llevar a cabo este paso, crearé dos unidades organizativas muy importantes. Una, llamada &lt;b&gt;Usuarios ocultos&lt;/b&gt;&amp;nbsp;será útil para mover ahí los usuarios que no queremos que salgan en la libreta de direcciones (por ejemplo porque abandonaron la compañía), y otra, llamada &lt;b&gt;root&lt;/b&gt;&amp;nbsp;que será la raíz de todas las Unidades Organizativas reales de la compañía, es decir, las que contendrán a todos los usuarios, equipos, grupos, etc. que pretendemos que continúen activos.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj10kZC2KfFGq_Chyphenhyphen9zK-QdbAFiZpZBZ8PLlaLcx7JVgZGSk0SE53ihCBxEtoaf07zF4VPeCyfSniKSQCh7xGdW-klHkhDheU7j13axfw3QaTvJdum91rnax2w4YXYFng6YCU2IjG8jyYAq/s1600/ou-org.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj10kZC2KfFGq_Chyphenhyphen9zK-QdbAFiZpZBZ8PLlaLcx7JVgZGSk0SE53ihCBxEtoaf07zF4VPeCyfSniKSQCh7xGdW-klHkhDheU7j13axfw3QaTvJdum91rnax2w4YXYFng6YCU2IjG8jyYAq/s1600/ou-org.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El siguiente paso consiste en escoger la forma en que queremos acceder contra el servicio LDAP. Existen básicamente dos formas de hacerlo: de manera anónima o mediante autenticación. El acceso anónimo es muy cómodo pero tiene dos inconvenientes: evidentemente la seguridad, y en segundo lugar, que algunos programas de correo tienen comportamientos indeseados cuando se les configura una password vacía.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El modo autenticado es simple: consiste en especificar una credencial con suficientes privilegios para hacer consultas. Todos los usuarios de Active Directory tienen, por defecto, esta posibilidad. El problema es que Outlook y otros programas de correo no permiten integrarse con el usuario logueado y obligan a especificar las credenciales en la configuración. En caso de un hipotético cambio de contraseña en el dominio, habría que luego ir a configurar de nuevo la conexión con la libreta LDAP en el programa de correo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Yo propongo como solución tirar por el camino de en medio. Para facilitar la configuración de todos los accesos LDAP de la compañía, indistintamente de los cambios de contraseñas, podemos crear un usuario en nuestro dominio cuya función sea exclusivamente esa. Le llamaremos &lt;b&gt;&lt;i&gt;accesoLDAP&lt;/i&gt;@debugmachine.local&lt;/b&gt; y la password que estimemos oportuno según los requerimientos de seguridad que necesitemos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h2&gt;
ENCONTRANDO LA RUTA LDAP&amp;nbsp;&lt;/h2&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez preparado y organizado nuestro dominio para accederlo por LDAP, necesitamos un último paso: hallar la ruta LDAP que vamos a usar como raíz de búsqueda. Dicha ruta se especifica en el formato estándar X500 (podéis conocer más detalles sobre cómo se especifica este formato en &lt;a href=&quot;http://es.wikipedia.org/wiki/LDAP&quot;&gt;este artículo&lt;/a&gt;).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En nuestro caso, si queremos establecer una libreta de direcciones &lt;b&gt;global&lt;/b&gt;&amp;nbsp;para toda la compañía, necesitamos la ruta LDAP de la unidad organizativa &lt;b&gt;root&lt;/b&gt;, que sería la siguiente:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote&gt;
OU=root, DC=debugmachine, DC=local&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como vemos, el orden se hace de atrás hacia adelante (excepto los dos valores DC que hacen alusión al dominio desglosado en sus dos miembros).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pero hilando más fino, podríamos crear no una, sino varias libretas de direcciones distintas, separadas para cada delegación u oficina (en nuestro caso, para cada Unidad Organizativa). Tendríamos entonces:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote&gt;
OU=Delegación Jerez de la Frontera, OU=root, DC=debugmachine, DC=local&lt;br /&gt;
OU=Delegación Murcia, OU=root, DC=debugmachine, DC=local&lt;br /&gt;
OU=Oficinas centrales, OU=root, DC=debugmachine, DC=local&lt;/blockquote&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como vemos, la lógica del formato X500 es muy simple y aunque en el link anterior está bien descrito, confío en que los ejemplos previos serán más que suficientes para que fácilmente especifiquéis los vuestros.&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
CONFIGURANDO OUTLOOK&lt;/h2&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En primer lugar agregaremos la cuenta de usuario. El procedimiento es sencillo: se crea una nueva cuenta usando protocolo IMAP según la propia Google lo describe en &lt;a href=&quot;http://mail.google.com/support/bin/answer.py?hl=es&amp;amp;answer=77661&quot;&gt;este documento&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Una vez realizado, creamos la libreta de direcciones global que actúe contra nuestro controlador de dominio (preferentemente contra alguno que sea un &lt;a href=&quot;http://technet.microsoft.com/es-es/library/cc736934(WS.10).aspx&quot;&gt;catálogo global&lt;/a&gt;). Los ejemplos están realizados con Microsoft Outlook 2003, pero son igual de válidos para cualquier versión posterior.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8r_uZRyRzoIObvthU6BdwEIIepp-dsvNzdmUTn_v3lY72MZ6feTigv7CoFeyDutditslEisGw1AYr38JAtG8wsOmNTLY-71OBZ_4FjyFx5Zr9nShK-5f0466HA2_bzWgybny24lf1hwN_/s1600/add-LDAP1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;297&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8r_uZRyRzoIObvthU6BdwEIIepp-dsvNzdmUTn_v3lY72MZ6feTigv7CoFeyDutditslEisGw1AYr38JAtG8wsOmNTLY-71OBZ_4FjyFx5Zr9nShK-5f0466HA2_bzWgybny24lf1hwN_/s320/add-LDAP1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Vamos al menú Herramientas y después Cuentas de correo electrónico... y agregamos una nueva libreta de direcciones de tipo LDAP:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8SDV27RD6AeLJOKU0HRWFiPMUSnpC7fwZZTDO02dNJftPhp1CXENdDSJZbg2XmTB36DE4x6kak87q08SxdQImtLOxionayVAlj9-E4ivFx-PhQEOiVfJVWedC7XIGXFzzFADh9QsX7L2Q/s1600/add-LDAP2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;298&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8SDV27RD6AeLJOKU0HRWFiPMUSnpC7fwZZTDO02dNJftPhp1CXENdDSJZbg2XmTB36DE4x6kak87q08SxdQImtLOxionayVAlj9-E4ivFx-PhQEOiVfJVWedC7XIGXFzzFADh9QsX7L2Q/s320/add-LDAP2.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Y escribimos los siguientes parámetros, para después clickar en &quot;Más configuraciones...&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYVunKrT8ba9mHJJkFZyfYL-GmSlM6A9W1c8Hf4lqhy6tk_Tctpn8X9i7avCKBrGN2DC5vsAVljiF6Ju6v9QVj-GrMzjrWYuUkFBpUlodzU__tTYf5qVuK_OCXgFfzJGF-zdYoU4xP4hSW/s1600/add-LDAP3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;255&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYVunKrT8ba9mHJJkFZyfYL-GmSlM6A9W1c8Hf4lqhy6tk_Tctpn8X9i7avCKBrGN2DC5vsAVljiF6Ju6v9QVj-GrMzjrWYuUkFBpUlodzU__tTYf5qVuK_OCXgFfzJGF-zdYoU4xP4hSW/s320/add-LDAP3.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
En esta ventana rellenaremos los campos de ambas pestañas en la manera que sigue (hay que tener en cuenta que el puerto LDAP por defecto es el 389, pero si usamos un servidor catálogo global, entonces se usa el &lt;b&gt;3268&lt;/b&gt;):&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIGkK2ph7331wJ_SOK3ArNsqevSiiTvc0wNTBhKpJytNIx9ZKXg7CDCyj3lVjnqyCIwTPBWFUyCOoGgiCfLHoCir-GhpHtwaMoW7oXi8jzbiWgmWszfIyQyJYw_7xebrBdk5Sw-ttm8VtV/s1600/add-LDAP4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIGkK2ph7331wJ_SOK3ArNsqevSiiTvc0wNTBhKpJytNIx9ZKXg7CDCyj3lVjnqyCIwTPBWFUyCOoGgiCfLHoCir-GhpHtwaMoW7oXi8jzbiWgmWszfIyQyJYw_7xebrBdk5Sw-ttm8VtV/s320/add-LDAP4.png&quot; width=&quot;312&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD4_-kKvaOHonkzQeSMXkWiae_Tjl1bSR2dyY2_5r_3vOUVkMcsoB2W6r_1-YrrR9mXgAWjouF-ZtBSAMOvwWhb79y9BFavT7T6ndymehkNwcQiv54nVcrmCKEYvF-f4-mLJyG8ohFrti3/s1600/add-LDAP5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD4_-kKvaOHonkzQeSMXkWiae_Tjl1bSR2dyY2_5r_3vOUVkMcsoB2W6r_1-YrrR9mXgAWjouF-ZtBSAMOvwWhb79y9BFavT7T6ndymehkNwcQiv54nVcrmCKEYvF-f4-mLJyG8ohFrti3/s320/add-LDAP5.png&quot; width=&quot;312&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Aceptamos todos los cambios, y, muy importante, cerramos y volvemos a abrir Outlook. Una vez tengamos de nuevo abierta la aplicación, sólo tenemos que abrir la &lt;b&gt;Libreta de direcciones&lt;/b&gt;&amp;nbsp;(atajo ctrl+shift+B) y veremos lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1ZxQQDM14_mjeSsbD9-dBvbj5aR7PZZBhKySPW5wTID0ovWjfa9BkgFjtgH0suyx2-87447-SooIlw0d4GSeljEUI0kI0gIEQ-4Y-nxjL4UP02A9Bts7-u19Qg3-mhXlBVJPIeqiSI7HC/s1600/add-LDAP6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;197&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1ZxQQDM14_mjeSsbD9-dBvbj5aR7PZZBhKySPW5wTID0ovWjfa9BkgFjtgH0suyx2-87447-SooIlw0d4GSeljEUI0kI0gIEQ-4Y-nxjL4UP02A9Bts7-u19Qg3-mhXlBVJPIeqiSI7HC/s320/add-LDAP6.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
¡Ahí está! Es nuestra libreta de direcciones de siempre, siendo leída desde el dominio Active Directory, y sin ningún servidor Exchange en el escenario. Como antes expliqué, se puede repetir el proceso tantas veces se necesite para tener diferentes libretas de direcciones segmentadas según el criterio que necesitemos (por ejemplo, por sedes).&lt;br /&gt;
&lt;br /&gt;
OK. ¿Y QUÉ PASA CON EL CORREO?&lt;br /&gt;
&lt;br /&gt;
El correo configurado vía IMAP es similar a un buzón tradicional en Outlook, pero hay algunos matices. Algunas diferencias las evitaremos mediante configuración, mientras que para otras tendremos que introducir leves diferencias en nuestra manera de trabajar.&lt;br /&gt;
&lt;br /&gt;
Todo ello lo veremos en la siguiente entrega.&lt;br /&gt;
&lt;br /&gt;
Saludo y ahorro.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/6142685033702187839/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2011/06/ahorro-de-costes-con-google-apps-iii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/6142685033702187839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/6142685033702187839'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2011/06/ahorro-de-costes-con-google-apps-iii.html' title='Ahorro de costes con Google Apps (III). Bye, bye, Exchange. Bienvenido, Mr. LDAP'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj10kZC2KfFGq_Chyphenhyphen9zK-QdbAFiZpZBZ8PLlaLcx7JVgZGSk0SE53ihCBxEtoaf07zF4VPeCyfSniKSQCh7xGdW-klHkhDheU7j13axfw3QaTvJdum91rnax2w4YXYFng6YCU2IjG8jyYAq/s72-c/ou-org.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-5106899926072263402</id><published>2010-04-11T14:10:00.008+02:00</published><updated>2013-02-18T22:03:54.004+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Alternativa"/><category scheme="http://www.blogger.com/atom/ns#" term="Apps"/><category scheme="http://www.blogger.com/atom/ns#" term="Exchange"/><category scheme="http://www.blogger.com/atom/ns#" term="Gmail"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="IMAP"/><category scheme="http://www.blogger.com/atom/ns#" term="Outlook"/><category scheme="http://www.blogger.com/atom/ns#" term="replacement"/><title type='text'>Ahorro de costes con Google Apps (II). Configuración de Gmail</title><content type='html'>&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://debugmachine.blogspot.com/2010/04/ahorro-de-costes-con-google-apps-i.html&quot;&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; Anterior&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;http://debugmachine.blogspot.com/2011/06/ahorro-de-costes-con-google-apps-iii.html&quot;&gt;Siguiente &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Continuamos esta serie de entradas dedicadas a &quot;medidas-anticrisis&quot; para empresas, y basadas en los servicios gratuitos de Google.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En el post anterior vimos cómo dar de alta un servicio de Google Apps integrado con un dominio de nuestra propiedad como punto de partida. Dado que, entre otras cosas, nuestro principal objetivo es conseguir retirar los servidores de correo y colaboración Microsoft Exchange, vamos a estudiar ahora algunos ajustes necesarios al servicio de Gmail, y Google Apps orientados a dicha finalidad.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Un servidor Exchange provee diferentes funcionalidades muy típicas en cualquier empresa. Estas ahora han de ser sustituidas o emuladas con distintas alternativas. A continuación expongo el resumen del planteamiento propuesto:&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR0U5SNAQy2JtqhUfQ7OMHaTHAtjzJQmGdBmLsp1QPq3Xng65xs141Wz-CvA5bdORavlbD17WVVCqveljz7-NwRCSuA_bMpeE-raMosyr8N1KRS87caaXWwTQWBzx3LTOx-mxAU_E-Zxk3/s1600/Google-Apps14.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;245&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR0U5SNAQy2JtqhUfQ7OMHaTHAtjzJQmGdBmLsp1QPq3Xng65xs141Wz-CvA5bdORavlbD17WVVCqveljz7-NwRCSuA_bMpeE-raMosyr8N1KRS87caaXWwTQWBzx3LTOx-mxAU_E-Zxk3/s400/Google-Apps14.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Llegados a este punto es importante una advertencia: las equivalencias de servicios reales y los propuestos no son exactas, e implica cierta adaptación a esta configuración, tanto en tareas administrativas como de los propios usuarios finales. No obstante, y puesto que la ofimática no nació con el Exchange ni con el Outlook, es justo pedir a los usuarios de nuestro dominio un poco de esfuerzo en adaptarse a una serie de ligeros cambios en su manera de trabajar; como recompensa, podrán disfrutar de muchas ventajas nuevas que harán el trabajo más cómodo a la larga, y la empresa podrá ahorrar una fortuna. Y para los que crean que se puede tener un Exchange pirateado de por vida, sé de buena tinta que Microsoft puede llamar a tu puerta cuando menos te lo esperes.&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
CONFIGURACIONES INICIALES&lt;/h2&gt;
&lt;br /&gt;
Vamos primero a configurar pequeños detalles que nos harán nuestra estancia en Google Apps más agradable.&lt;br /&gt;
&lt;br /&gt;
Entramos al panel de control de nuestro dominio a través del siguiente enlace:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/a/cpanel/debugmachine.com&quot;&gt;http://www.google.com/a/cpanel/debugmachine.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Si tenéis algún otro dominio registrado y queréis que se comporte como alias del principal, ahora es el momento de agregarlo.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
De esta forma, podemos también registrar el dominio ficticio &quot;&lt;b&gt;the&lt;/b&gt;debugmachine.com&quot;, como variante del principal.&lt;/div&gt;
&lt;br /&gt;
Así, si por ejemplo ya tenía creado un e-mail llamado &lt;b&gt;joseangel@debugmachine.com&lt;/b&gt;, automáticamente dicho buzón también recibirá los mails enviados a &lt;b&gt;joseangel@&lt;i&gt;the&lt;/i&gt;debugmachine.com&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Para ello seleccionad esta opción:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE8fv1KSzw3Tv-7iN6l1y5J5Y_ttX1Gi5OnlHy12PI7ApgB1z2FSkw0Q_X3SKsu6awIEJjB2bhGzavZp-MMGjpy7eFt6IhWEQH45DzO6-0DvoV3BzHmBdQ9WzeL9X3hTyPg7vwN8hI2181/s1600/Google-Apps15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE8fv1KSzw3Tv-7iN6l1y5J5Y_ttX1Gi5OnlHy12PI7ApgB1z2FSkw0Q_X3SKsu6awIEJjB2bhGzavZp-MMGjpy7eFt6IhWEQH45DzO6-0DvoV3BzHmBdQ9WzeL9X3hTyPg7vwN8hI2181/s320/Google-Apps15.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Ahora sólo hay que escribir el nombre del dominio que queremos agregar como &quot;alias&quot; y continuar:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPKkMRNZs723p4KUzwiUifeq0Yl1G8jCo6sUvOGq5hvhopG0nFRESZ24CNm1QNCQSB1whyKlrKbBEQL8beD8VfBLGe-iMPhDrj8REcvW5h_NRb2IgvN_7x8Xcmn_NGaSbfE-RUEbU01gst/s1600/Google-Apps16.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPKkMRNZs723p4KUzwiUifeq0Yl1G8jCo6sUvOGq5hvhopG0nFRESZ24CNm1QNCQSB1whyKlrKbBEQL8beD8VfBLGe-iMPhDrj8REcvW5h_NRb2IgvN_7x8Xcmn_NGaSbfE-RUEbU01gst/s320/Google-Apps16.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Nos aparecerá una ventana para invitarnos a comprobar que el dominio en efecto es de nuestra propiedad. El procedimiento es exactamente el mismo &lt;a href=&quot;http://debugmachine.blogspot.com/2010/04/ahorro-de-costes-con-google-apps-i.html#domaincheck&quot;&gt;descrito en el capítulo anterior&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ahora podemos ir a &quot;Apariencia&quot; y darle un poquito de nuestro &quot;look &amp;amp; feel&quot; subiendo nuestro propio logo. Ha de estar en GIF o PNG y pesar no más de 20KB. En la misma pantalla podemos escoger nuestros colores corporativos.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUB2Pl66cksKdm48oeL4X9QPtwqpxtt_dO42YWw1ORhrOfzaEgDG51TAQ9edjnMQEY4MpVwA274Niz3P-25fTHy9-zejD4T7qUP44ZP646GyEakemhYAat2uuJflTlc91-gEbb7P6BaUvL/s1600/Google-Apps17.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUB2Pl66cksKdm48oeL4X9QPtwqpxtt_dO42YWw1ORhrOfzaEgDG51TAQ9edjnMQEY4MpVwA274Niz3P-25fTHy9-zejD4T7qUP44ZP646GyEakemhYAat2uuJflTlc91-gEbb7P6BaUvL/s320/Google-Apps17.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
CREACIÓN Y GESTIÓN DE BUZONES Y GRUPOS&lt;/h2&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El siguiente paso es replicar todo el contenido del servidor de correo actual en el propio Google Apps. Para ello Google nos ofrece dos métodos en la versión Standard Edition (en la edición Premier existen herramientas de integración mucho más sofisticadas):&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Crear individualmente cada buzón (recomendado si el número de altas no es muy grande)&lt;/li&gt;
&lt;li&gt;Importar un archivo CSV (valores separados por comas) con todos los buzones.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Dicho CSV se puede crear con cualquier hoja de cálculo, pero lo apropiado ahora para ir viendo el funcionamiento de toda la suite, es hacerlo con el propio Google Docs. Nos vamos a &lt;a href=&quot;http://docs.debugmachine.com/&quot;&gt;http://docs.debugmachine.com&lt;/a&gt; y pulsamos en &quot;&lt;b&gt;Crear nuevo&lt;/b&gt;&quot; y &quot;&lt;b&gt;Hoja de cálculo&lt;/b&gt;&quot;. Nos aparecerá una hoja de cálculo en la que podemos importar un archivo de Excel previamente creado con todos los usuarios (dicho Excel, a su vez, se puede crear exportando la lista de buzones desde el propio Exchange). La estructura, incluyendo la fila con los nombres de los campos ha de ser la que se muestra a continuación:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLYMUd4kCX-EN9qTFrk0cmKCGxhIZ9xB5-W5wYi7Kb7KSOwbgCsv0nva2y8oR7AzguIu5fqOsKGy0a0hSGKWana5OllTzF8ryfVZqGtbOgV0g9F135VImcP2aGD6NAhZX3_FDJ93NshyphenhyphenlV/s1600/Google-Apps18.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;207&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLYMUd4kCX-EN9qTFrk0cmKCGxhIZ9xB5-W5wYi7Kb7KSOwbgCsv0nva2y8oR7AzguIu5fqOsKGy0a0hSGKWana5OllTzF8ryfVZqGtbOgV0g9F135VImcP2aGD6NAhZX3_FDJ93NshyphenhyphenlV/s400/Google-Apps18.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Una vez tengamos todos los usuarios definidos, lo grabamos como archivo CSV haciendo click en &quot;&lt;b&gt;Archivo&lt;/b&gt;&quot; y en &quot;&lt;b&gt;Descargar como &amp;gt; CSV (hoja actual&lt;/b&gt;)&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6WxI4tnnbA8lyUmDvXuC5GobN423BMksEYVLFH7IAXntjXSuuQMHn2zbrUNv-vT5NIB0oxPs5lYURjrc0XuQgW_SGQSnZ08ySHwVrRerJiAlBDAIJkqbQSaAlcYiW0Sp78FRVl9GVuBXt/s1600/Google-Apps19.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6WxI4tnnbA8lyUmDvXuC5GobN423BMksEYVLFH7IAXntjXSuuQMHn2zbrUNv-vT5NIB0oxPs5lYURjrc0XuQgW_SGQSnZ08ySHwVrRerJiAlBDAIJkqbQSaAlcYiW0Sp78FRVl9GVuBXt/s320/Google-Apps19.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Con el CSV ya descargado en nuestro ordenador, nos vamos, en el panel de control del dominio, al menú &quot;&lt;b&gt;Herramientas avanzadas&lt;/b&gt;&quot; y hacemos click en la opción &quot;&lt;b&gt;Actualización masiva de cuentas de usuario&lt;/b&gt;&quot;:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTppQzzBCi_xgRNkLN8tlE6aArkuqcki95ZphQ0nFWyTM6BgRVsQVdVvvbU9qhdVisYSoAUrgGfCW8yaenGQ2mWT8fPpca34rFMKng4vzFUmvhYfiIgeDarPLEXgrTT14pliPsNDVW0UCb/s1600/Google-Apps20.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;87&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTppQzzBCi_xgRNkLN8tlE6aArkuqcki95ZphQ0nFWyTM6BgRVsQVdVvvbU9qhdVisYSoAUrgGfCW8yaenGQ2mWT8fPpca34rFMKng4vzFUmvhYfiIgeDarPLEXgrTT14pliPsNDVW0UCb/s400/Google-Apps20.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahí ya sólo tenemos que subir el archivo y Google automáticamente dará de alta todos los buzones.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Todos los buzones dados de alta implican en sí mismos una cuenta de acceso Google Apps, por lo que cada uno además de sus 7,4GB de correo, dispondrán de 1024MB para crear o subir documentos online, además de estar automáticamente integrado en la lista global de direcciones y en el Google Talk (chat y llamadas de voz sobre IP).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;h2&gt;
ACTIVANDO LOS CONTACTOS COMPARTIDOS&lt;/h2&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por defecto, el servicio &quot;Google Contacts&quot; no viene activado en las Google Apps para empresas, así que tendremos que activarlo. Para ello iremos a la pantalla principal de gestión, donde salen los iconos de todos los servicios y pincharemos en la siguiente opción:&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;h2 class=&quot;inlinetext&quot; style=&quot;display: inline; font-size: 1.5em; margin: 0px; padding: 0px 6px 0px 0px;&quot;&gt;
Configuración del servicio&lt;/h2&gt;
&lt;ul class=&quot;inlinelist2&quot; style=&quot;display: inline; list-style-type: none; margin: 0px; padding: 0px;&quot;&gt;
&lt;li style=&quot;display: inline; margin: 0px; padding: 0px 6px 0px 0px;&quot;&gt;&lt;a href=&quot;https://www.google.com/a/cpanel/debugmachine.com/SelectServices&quot; style=&quot;color: #0066cc; outline-style: none; white-space: nowrap;&quot;&gt;Añadir más servicios&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 12px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ahí buscamos el icono de &quot;&lt;b&gt;Contactos&lt;/b&gt;&quot; y lo agregamos. Además, podemos añadir otros servicios experimentales o de terceros, si vamos al &quot;MarketPlace&quot;. Aunque esto supone un potencial infinito de Google Apps como herramienta de gestión, no vamos a profundizar por el momento en ello. Espero dedicar más adelante una nueva serie de posts centrándome en el potencial de MarketPlace y en un ranking de las mejores aplicaciones para añadir a nuestras Google Apps.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez agregado el servicio de Contactos, debemos activar la función de compartir la libreta global de direcciones, en el menú &quot;Usuarios y grupos&quot; y &quot;Configuración&quot;:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs1T3Glr1rEVZvC_lN9hRhrRwfq_oAlZQR0KyW2Sy8fJfr2g7yZyx4hxd9sYLF8v5bgs7unfVbSNowonPDrOyLAlVLRPwiYlDz8qwyK5zfEDvXEbAxgiHq9EgCIE9M0gfMGq9jP5FjXGrs/s1600/Google-Apps21.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;162&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs1T3Glr1rEVZvC_lN9hRhrRwfq_oAlZQR0KyW2Sy8fJfr2g7yZyx4hxd9sYLF8v5bgs7unfVbSNowonPDrOyLAlVLRPwiYlDz8qwyK5zfEDvXEbAxgiHq9EgCIE9M0gfMGq9jP5FjXGrs/s400/Google-Apps21.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
CREACIÓN DE LISTAS DE DISTRIBUCIÓN&lt;/h2&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Podemos crear cuantas listas de distribución (grupos) deseemos. Para ello vamos al mismo menú de &quot;Usuarios y grupos&quot; y esta vez a &quot;Grupos&quot;. Podemos crear uno nuevo y seleccionar todas las direcciones que queremos que formen parte de esa lista de distribución (pueden ser direcciones internas o de cualquier otro dominio de Internet).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Añadiremos una dirección de e-mail para identificar ese grupo y escogeremos los permisos de acceso (para decidir si el grupo es accesible sólo dentro de la organización, o también desde Internet). Es bastante flexible en ese aspecto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El siguiente paso es escoger los miembros de dicho grupo escribiendo las direcciones en el recuadro correspondiente. También hay una opción para escoger que sea un grupo global (todos los destinatarios).&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
CONFIGURACIÓN DE UN BUZÓN DE CORREO&lt;/h2&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez hecha la configuración global del servicio, hay que activar algunas funcionalidades de manera individual en cada buzón. Para ello hay que entrar ya como si fuésemos el propio usuario, ya que muchas de las opciones que nos interesan están ubicadas en el menú de configuración del webmail de la cuenta Gmail. Esto es sin duda una carencia administrativa, pero se debe a que estamos trabajando con el servicio Standard Edition. Si se contrata la Premier Edition, las posibilidades administrativas mejoran sustancialmente.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Cerramos la sesión de administrador, y abrimos la cuenta del buzón que queremos preparar en la URL que en su momento creamos para tal fin: &lt;a href=&quot;http://mail.debugmachine.com/&quot;&gt;http://mail.debugmachine.com&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Una vez dentro, nos vamos a &quot;Configuración&quot; (arriba a la derecha). Lo primero de todo es activar algunas opciones añadidas que nos vendrán muy bien para hacer un uso más productivo del correo y mejorar la interacción con Outlook o Thunderbird. Para ello Google nos da las &quot;Google Labs&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgg7eth4zbRgq0pC-8RsBb03oO_KZykOwoxawnDhuiuEqKuyJckCUG6BARBvdEkR84_zUZ5nG7pbbQhe6AhRBQD2Xc_HULJUTvQr_LCqBFjXFyh9Y7jT8zVWli8zL9c7_Fyv8SoOquO9Kn/s1600/Google-Apps22.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgg7eth4zbRgq0pC-8RsBb03oO_KZykOwoxawnDhuiuEqKuyJckCUG6BARBvdEkR84_zUZ5nG7pbbQhe6AhRBQD2Xc_HULJUTvQr_LCqBFjXFyh9Y7jT8zVWli8zL9c7_Fyv8SoOquO9Kn/s400/Google-Apps22.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez dentro activaremos los siguientes plug-ins:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Controles avanzados de IMAP&lt;/li&gt;
&lt;li&gt;Imágenes en el chat&lt;/li&gt;
&lt;li&gt;Inserción de imágenes&lt;/li&gt;
&lt;li&gt;Respuestas prediseñadas&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
Guardamos los cambios y después nos vamos a la opción &quot;Reenvío y correo POP/IMAP&quot; donde activaremos el protocolo IMAP (¡imprescindible, es el núcleo de todo el jaleo que estamos montando!). &amp;nbsp;Nos aseguramos de que la opción &quot;Borrar los mensajes inmediatamente cuando los marco como eliminados en IMAP&quot; está seleccionada (también necesario si queremos seguir usando Outlook como cliente de mensajería).&lt;br /&gt;
&lt;br /&gt;
Ahora nos vamos a &quot;Etiquetas&quot;. Gmail lo que permite es etiquetar los correos con diferentes etiquetas creadas por nosotros. Un mismo correo puede tener varias etiquetas a la vez. Sin embargo, dichas etiquetas, son expuestas por el servicio IMAP como carpetas. Y viceversa, o sea, las carpetas de correo que hayamos creado en nuestro cliente (Outlook, Thunderbird, iPhone o cualquier otro) aparecerán como etiquetas en el webmail. Por tanto, es importante también, para tener un entorno ordenado y agradable, eliminar del IMAP las etiquetas que no queremos ver como carpetas en el programa de correo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyEu15BvquqOJ_sU16qFYlcAyfw9fojoe1BNu4eQjAnL3-5Fcfi3tIDr-GkrCkbqEH2aOLn_DXaxcvqZMra3gQhkFWKfgjI_TPtHNAIH6oIln6GSyRzjttTG8hZGl35hz_hfclmf2CtM1E/s1600/Google-Apps23.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;260&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyEu15BvquqOJ_sU16qFYlcAyfw9fojoe1BNu4eQjAnL3-5Fcfi3tIDr-GkrCkbqEH2aOLn_DXaxcvqZMra3gQhkFWKfgjI_TPtHNAIH6oIln6GSyRzjttTG8hZGl35hz_hfclmf2CtM1E/s400/Google-Apps23.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Para finalizar por el momento la configuración del buzón, nos vamos a &quot;Configuración&quot; &amp;gt; &quot;Temas&quot; (aviso: esta opción no saldrá disponible con el navegador Internet Explorer 6 o anterior, pues está pensada para los nuevos estándares). Aquí podemos escoger el aspecto de nuestro webmail para hacer un entorno más agradable y acorde a nuestra organización. Algunos de los &quot;temas&quot; van cambiando dinámicamente según la hora o la zona del planeta en la que vivamos. Yo he escogido el que se muestra en la foto:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdJ0MlIJhO9RRhhhYHTqUuYMvP7dwdia2vgX_IGmhHsQdwvZ7bEH1orLma-nU-YVjLdlkjFS4Q7BWVkDl687gxtkKIlU9wmj-AjEhO4b49pu7KL8jiYNibn9B8Rm4oKZmOzzX-gy9azd-C/s1600/Google-Apps25.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;262&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdJ0MlIJhO9RRhhhYHTqUuYMvP7dwdia2vgX_IGmhHsQdwvZ7bEH1orLma-nU-YVjLdlkjFS4Q7BWVkDl687gxtkKIlU9wmj-AjEhO4b49pu7KL8jiYNibn9B8Rm4oKZmOzzX-gy9azd-C/s400/Google-Apps25.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Muchas opciones de nuestro Exchange que antes hubiésemos administrado desde la consola de &quot;Usuarios y equipos de Active Directory&quot; encuentran su equivalencia en el &quot;Panel&quot; de Google Apps. Sin embargo, otras muchas hay que ir a buscarlas a la configuración personal de cada buzón; al igual ocurre con algunas opciones del cliente Outlook (por ejemplo, el mensaje de &quot;Fuera de oficina&quot;). A continuación se muestra una relación de algunas tareas administrativas típicas y su actual emplazamiento:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table style=&quot;border: 1px solid black;&quot;&gt;&lt;tbody&gt;
&lt;tr style=&quot;background-color: #d0d0d0;&quot;&gt;&lt;td&gt;&lt;b&gt;Tarea&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Ubicación clásica&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Nueva ubicación&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Crear nuevo buzón&lt;/td&gt;&lt;td&gt;Usuarios y equipos de AD&lt;/td&gt;&lt;td&gt;Panel de Google Apps&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Crear nueva lista o grupo&lt;/td&gt;&lt;td&gt;Usuarios y equipos de AD&lt;/td&gt;&lt;td&gt;Panel de Google Apps&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Agregar dirección de e-mail&lt;/td&gt;&lt;td&gt;Usuarios y equipos de AD&lt;/td&gt;&lt;td&gt;Panel de Google Apps&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Cambiar contraseña&lt;/td&gt;&lt;td&gt;Usuarios y equipos de AD&lt;/td&gt;&lt;td&gt;Panel de Google Apps o Configuración del buzón Gmail&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Reenviar los correos a otra dirección&lt;/td&gt;&lt;td&gt;Usuarios y equipos de AD&lt;/td&gt;&lt;td&gt;Configuración del buzón Gmail&lt;/td&gt; &lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Activar mensaje de &quot;fuera de oficina&quot;&lt;/td&gt;&lt;td&gt;Outlook&lt;/td&gt;&lt;td&gt;Configuración del buzón Gmail&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: white;&quot;&gt;&lt;td&gt;Reglas y alertas&lt;/td&gt;&lt;td&gt;Outlook&lt;/td&gt;&lt;td&gt;Filtros y etiquetas (webmail)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f0f0;&quot;&gt;&lt;td&gt;Activar protocolos POP3 o IMAP4 de un buzón&lt;/td&gt;&lt;td&gt;Usuarios y equipos de AD&lt;/td&gt;&lt;td&gt;Configuración del buzón Gmail&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ahora ya estamos preparados para ir a nuestro cliente de correo favorito y atacar al buzón de la cuenta Gmail. En el siguiente artículo veremos cómo configurar el Outlook para ello, intentando que la experiencia sea bastante similar a la de trabajar con el Exchange y para también poder migrar todo el correo de una cuenta a otra.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
No obstante, será sólo una parada intermedia antes de ir a nuestro objetivo final como sustituto íntegro de Outlook: &lt;a href=&quot;http://es-es.www.mozillamessaging.com/es-ES/thunderbird/&quot;&gt;Mozilla Thunderbird&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Se puede enunciar, a modo de regla de tres, que &quot;Thunderbird&quot; es a &quot;Microsoft Outlook&quot; como &quot;Firefox&quot; es a &quot;Internet Explorer&quot;. Con eso queda dicho todo, creo.&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left;&quot;&gt;&lt;a href=&quot;http://debugmachine.blogspot.com/2010/04/ahorro-de-costes-con-google-apps-i.html&quot;&gt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; Anterior&lt;/a&gt;&amp;nbsp; &lt;a href=&quot;http://debugmachine.blogspot.com/2011/06/ahorro-de-costes-con-google-apps-iii.html&quot;&gt;Siguiente &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/5106899926072263402/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2010/04/ahorro-de-costes-con-google-apps-ii.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5106899926072263402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5106899926072263402'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2010/04/ahorro-de-costes-con-google-apps-ii.html' title='Ahorro de costes con Google Apps (II). Configuración de Gmail'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR0U5SNAQy2JtqhUfQ7OMHaTHAtjzJQmGdBmLsp1QPq3Xng65xs141Wz-CvA5bdORavlbD17WVVCqveljz7-NwRCSuA_bMpeE-raMosyr8N1KRS87caaXWwTQWBzx3LTOx-mxAU_E-Zxk3/s72-c/Google-Apps14.png" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-3989061943816393570</id><published>2010-04-08T01:08:00.006+02:00</published><updated>2013-02-18T22:06:19.217+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Alternativa"/><category scheme="http://www.blogger.com/atom/ns#" term="Crisis"/><category scheme="http://www.blogger.com/atom/ns#" term="Empresas"/><category scheme="http://www.blogger.com/atom/ns#" term="Exchange"/><category scheme="http://www.blogger.com/atom/ns#" term="Gmail"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Apps"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><title type='text'>Ahorro de costes con Google Apps (I). Puesta en marcha.</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Como no podía ser de otra manera, en tiempos de crisis hay que sacar dinero hasta de debajo de las piedras. En las empresas actuales, fuertemente basadas en las tecnologías de la información, el problema es aún mayor debido a los costes de licencias de software, al hardware, y al mantenimiento de todo el tinglado.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Sin embargo, hay otra forma de hacer las cosas (otro &quot;paradigma&quot; que dirían los New Age). La cuestión es usar recursos basados en lo que ahora llaman la &quot;nube&quot;, y combinarlos con software gratuito libre. Esto nos da unas ventajas muy claras:&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Reducción de hardware&lt;/li&gt;
&lt;li&gt;Reducción de comunicaciones y publicación de equipos y servicios&lt;/li&gt;
&lt;li&gt;Reducción de coste de mantenimiento&lt;/li&gt;
&lt;li&gt;Disponibilidad global&lt;/li&gt;
&lt;li&gt;Ahorro en licencias&lt;/li&gt;
&lt;li&gt;Apoyo de una enorme comunidad de desarrolladores y usuarios.&lt;/li&gt;
&lt;li&gt;Los gallifantes que te dan en tu empresa por salvar los presupuestos anuales gracias a tanto ahorro&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En definitiva, este es el primero de una serie de artículos donde demostraremos que existen alternativas reales a la tendencia clásica en nuestro país: servidores Windows, suite de producción Microsoft Office, comunicaciones con Microsoft Outlook y servidor de correo Microsoft Exchange.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este último parecería el producto &quot;irreductible&quot; ya que muy pocas compañías se atreven a prescindir de él. Sin embargo en estas entradas mostraré algunas pistas e indicaciones de cómo es posible retirar los Exchange de la empresa sin que la producción se resienta.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
La madre del cordero&lt;/h2&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Todo esto gira en torno como decía antes a la integración de los servicios de IT en la &quot;nube&quot;, palabro que está ahora muy de moda y que viene a hacer alusión al uso de servicios externos, basados en Internet y en tecnologías WEB (especialmente AJAX), de tal forma que toda la información se guarda en la Red, y se trabaja con un simple navegador.&lt;/div&gt;
&lt;br /&gt;
Hay una palabra clave detrás de todo esto: &lt;a href=&quot;http://www.igoogle.com/&quot;&gt;Google&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Alguno ya se estará preguntando:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;
&quot;Aparte del mejor buscador de la historia, los álbumes de fotos Picasa, el correo GMail, la fantástico motor de cartografía integrada con los demás servicios, los blogs y listas de correo gratuitos, el Reader, los Libros online, el mejor navegador Web de la historia, el GoogleTalk, el repositorio de código abierto y el Orkut, ¿qué ha hecho Google por nosotros?&quot;&lt;/blockquote&gt;
&lt;br /&gt;
Pues la respuesta es sencilla: &lt;a href=&quot;http://www.google.com/apps&quot;&gt;Google Apps&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Google Apps es una suite de programas accesibles vía web, que permiten, de forma integrada con nuestra cuenta Google, crear, editar, subir, almacenar, compartir, enviar casi cualquier tipo de documento, incluyendo hojas de cálculo, procesador de texto, presentaciones, etc., permitiendo intercambiar datos entre ellos, convertirlos al vuelo a PDF y mil cosas más, crear sitios WEB de manera visual, y alojarlos. Gratis.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
¿Pero qué es lo mejor de todo? Lo mejor es que Google nos permite acceder a dicha suite de programas usando nuestro propio dominio de Internet. De esa forma, podemos tener (en la versión gratuita) hasta 50 cuentas de correo electrónico, con 7GB de almacenamiento cada una, accesibles desde IMAP, POP3, WEB y con 1024MB para almacenar documentos creados en Google Apps.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Además, todo funciona de forma muy &quot;2.0&quot; permitiendo empotrar documentos en una web (como se hace por ejemplo con un video de Youtube), enviar el link, escoger el nivel de acceso para cada usuario, etc. Esto muy a grandes rasgos, si nos metemos a fondo, combinando los &quot;gadgets&quot; y las opciones del &quot;Lab&quot; las posibilidades son infinitas.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este será pues, el núcleo de nuestro proyecto (a desarrollar en los siguientes capítulos) para sustituir una infraestructura de colaboración empresarial típica montada sobre Exchange y Microsoft Office, en otra totalmente gratuita, flexible y eficiente.&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
¡Hasta el infinito y más allá!&lt;/h2&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pues allá vamos. Lo primero que necesitamos es lógicamente, tener un nombre de dominio de nuestra organización para usar con este servicio. Además, necesitamos tener control sobre la tabla de registros DNS de dicho dominio, lo cuál es un servicio básico y habitual de cualquier proveedor de dominios.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para realizar estos artículos, he registrado en www.godaddy.com un dominio que usaré para este mismo blog: debugmachine.com. Una vez activado y comprobado que tengo acceso a la tabla DNS de dicho dominio, me &amp;nbsp;dispongo a darlo de alta en el servicio &quot;Google Apps Standard Edition&quot;. Hay modalidades de pago con infinitas prestaciones orientadas a grandes compañías; de momento iremos a la gratuita, que nos sobra y nos basta.&lt;/div&gt;
&lt;br /&gt;
Nos dirigimos al siguiente enlace:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/a/cpanel/domain/new&quot;&gt;http://www.google.com/a/cpanel/domain/new&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Colocamos nuestro nombre de dominio, y continuamos:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxBSwJAKLye5NsOjdG7cqzIv5fv_VK48vB5c632O2l6DFUWx5iRzOp3aIinqeuYu_zLPL1GORGiRhKAfryl8NCi9tKu7lUWqIPoB188DF6Co7H5Dr3gSh-AznMs-a5L0UmawOoYQEouVg_/s1600/Google-Apps1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;285&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxBSwJAKLye5NsOjdG7cqzIv5fv_VK48vB5c632O2l6DFUWx5iRzOp3aIinqeuYu_zLPL1GORGiRhKAfryl8NCi9tKu7lUWqIPoB188DF6Co7H5Dr3gSh-AznMs-a5L0UmawOoYQEouVg_/s400/Google-Apps1.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En la siguiente pantalla, rellenamos los datos y continuamos. En el paso 3, tenemos que escoger un nombre de usuario que se usará como &lt;b&gt;administrador&lt;/b&gt;&amp;nbsp;de todo el tinglado, pero no recomiendo que lo uséis como usuario en sí mismo (para recibir correo, trabajar, etc.). Yo he escogido &lt;b&gt;admin&lt;/b&gt;.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxKUp7VUc9abM0QMW7s4y5eICNfcYArK0sU2c5Y6-IF0LxrwW9ZDbI2fWfgqkw26aTVDWxWol7YlsZGPn6YSzxKWpbh_UJ_oShmMw2d_66QTd-BdEj7OQ5CXYZPO7yHl9Qk969kA-IGEi5/s1600/Google-Apps2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;342&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxKUp7VUc9abM0QMW7s4y5eICNfcYArK0sU2c5Y6-IF0LxrwW9ZDbI2fWfgqkw26aTVDWxWol7YlsZGPn6YSzxKWpbh_UJ_oShmMw2d_66QTd-BdEj7OQ5CXYZPO7yHl9Qk969kA-IGEi5/s400/Google-Apps2.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Elegís una password, aceptáis las condiciones y seguimos adelante.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Aquí ya nos aparece el panel de control de Google Apps integrado con nuestro dominio. Podéis mirar por encima que tenemos opciones para cambiar el comportamiento de las distintas aplicaciones: Google Docs, el Chat, Contactos compartidos, integración con teléfonos móviles, etc. Pero antes de poder activar cada uno de estos servicios, es necesario un paso importantísimo, que es demostrarle a Google que dicho dominio es nuestro y que tenemos control DNS sobre el mismo.&lt;/div&gt;
&lt;br /&gt;
Para ello hay que clickar el enlace mostrado aquí:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvWb_3tzkKKJe9u-w7WFEfp3jfaXKW8mFjcLI98QiL0yz5qTMdA58g5wB2cgJSNrhg9NhyphenhyphenN_odikSIwR_VmbAUAP_srp1xO-q3m-VNqaCAXVYtbYHZi4SCSj1KfHl6VQTWpe50E-o_7VFX/s1600/Google-Apps3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;276&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvWb_3tzkKKJe9u-w7WFEfp3jfaXKW8mFjcLI98QiL0yz5qTMdA58g5wB2cgJSNrhg9NhyphenhyphenN_odikSIwR_VmbAUAP_srp1xO-q3m-VNqaCAXVYtbYHZi4SCSj1KfHl6VQTWpe50E-o_7VFX/s640/Google-Apps3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Google nos ofrece dos maneras de validar nuestro dominio: subiendo a nuestro servidor web un archivo HTML que ellos nos dan, o bien creando un registro CNAME en la tabla DNS del dominio. Puesto que yo no tengo un servidor web vinculado a este dominio, me decanto por el segundo método.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;&quot; name=&quot;domaincheck&quot;&gt;Aquí&lt;/a&gt; viene el primer paso peliagudo de esta operación; esto lo necesitamos realizar en la tabla de gestión DNS de nuestro dominio. En mi caso dicha tabla está en GoDaddy, que es a quien he comprado el dominio. Tendré pues que ir allí y dar de alta los datos que me pide Google. Consiste en crear un registro de tipo &quot;CNAME&quot;, cuyo nombre y destino son los siguientes:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipd4ct5PCKTLW7X8AwVqC3VUyZpzVeVgX9hB2q_RGPzu5FdmbJEicv8b2Hm3HT8e1xwtiSZEA34e-Qk4Cu1u-MYdH11lxa2vV9pcfs6Ln9MA-rTQ3tRGssw5vIy00JVPeR2qV_Nx1gZ-LJ/s1600/Google-Apps4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;558&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipd4ct5PCKTLW7X8AwVqC3VUyZpzVeVgX9hB2q_RGPzu5FdmbJEicv8b2Hm3HT8e1xwtiSZEA34e-Qk4Cu1u-MYdH11lxa2vV9pcfs6Ln9MA-rTQ3tRGssw5vIy00JVPeR2qV_Nx1gZ-LJ/s640/Google-Apps4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Dicho CNAME lo doy de alta en mi proveedor de dominios (este paso varía para cada proveedor, pero en esencia debe ser un proceso similar). El panel de control DNS puede también estar bajo el nombre &quot;Nameservers&quot;. Una vez localizado, agrego un nuevo registro de tipo &quot;CNAME&quot; (o &quot;alias&quot;):&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTO6LIbuGmXgCRjoW0pDMU6-8GUq59px57TbGwLMfOW13e4GlAVSEgjDGxkUa-qufORFtB8vGX0boLe1hDiYRGQOCCIAJZTg53meinFMYfEXdFEfzWCccNe5OzRHRWqDcLZ9Z5tZrRBO1l/s1600/Google-Apps5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;111&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTO6LIbuGmXgCRjoW0pDMU6-8GUq59px57TbGwLMfOW13e4GlAVSEgjDGxkUa-qufORFtB8vGX0boLe1hDiYRGQOCCIAJZTg53meinFMYfEXdFEfzWCccNe5OzRHRWqDcLZ9Z5tZrRBO1l/s400/Google-Apps5.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Y completo los datos con lo indicado por Google:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNc8iBAaFGSLtgHNU9i2s4O8oNoXIu6SUpcyFPVfTghrBOhEkNrnTjyXm5TIo2xHW0vmPcMUdmxicsx8jB_rHQpoad0MeJv_GJUjQUdsSzItp4TLj3SASGpYamepIQarZTPSZcbfsWxtN8/s1600/Google-Apps6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;228&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNc8iBAaFGSLtgHNU9i2s4O8oNoXIu6SUpcyFPVfTghrBOhEkNrnTjyXm5TIo2xHW0vmPcMUdmxicsx8jB_rHQpoad0MeJv_GJUjQUdsSzItp4TLj3SASGpYamepIQarZTPSZcbfsWxtN8/s640/Google-Apps6.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Una vez aceptado el cambio, pasados unos minutos ya debería aparecer en la lista de alias o CNAMEs:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5kk0jGPz16rjl0iRdFIYxEMcDaAdGILW53Q7Fo9hMwsIYFcJLm_NhaRLhLd63MRFdbjiRIhIeVPtE-UaTR4nSdM6xAsgXe_28sUQcLPgCYtyByXPCHtmlq5iSxUwqD7LzMVCMxkCy0sKI/s1600/Google-Apps7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;313&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5kk0jGPz16rjl0iRdFIYxEMcDaAdGILW53Q7Fo9hMwsIYFcJLm_NhaRLhLd63MRFdbjiRIhIeVPtE-UaTR4nSdM6xAsgXe_28sUQcLPgCYtyByXPCHtmlq5iSxUwqD7LzMVCMxkCy0sKI/s640/Google-Apps7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ahora hay que dejar reposar el estofado, para que tenga más sabor, y para que estos cambios se propaguen a través de todos los DNS de la Red. El proceso en teoría puede tardar hasta 48 horas, pero en la práctica no suele tardar más de una hora o dos.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez esto ocurra, volvemos a la pantalla de Google para verificar si dicho cambio ya se ha propagado. Si aún no, sólo hay que ser paciente y esperar un poco más. Una vez conseguido, Google dará por bueno el dominio y ya podremos pasar al siguiente paso:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoaOhGf_iVeVQN6YChzQMfUwMBF5Hu-7-HBfhJiBuiguI6KUz5wVJldYR_gtaxeYWy4OpYPYSrrsp_XC7kix3HX6gpdzHF3qSzRWK9DT8BLaUChln3aQgFQcm1yjOCNUTtocANIQXW6VqI/s1600/Google-Apps8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;103&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoaOhGf_iVeVQN6YChzQMfUwMBF5Hu-7-HBfhJiBuiguI6KUz5wVJldYR_gtaxeYWy4OpYPYSrrsp_XC7kix3HX6gpdzHF3qSzRWK9DT8BLaUChln3aQgFQcm1yjOCNUTtocANIQXW6VqI/s400/Google-Apps8.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ahora nuestro dominio ya está legítimamente vinculado a Google Apps y podemos comenzar a activar servicios. Los servicios en principio disponibles para Google Apps Standard Edition son los siguientes:&lt;/div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Mail&lt;/li&gt;
&lt;li&gt;Calendario&lt;/li&gt;
&lt;li&gt;Documentoss&lt;/li&gt;
&lt;li&gt;Chat&lt;/li&gt;
&lt;li&gt;Contactos&lt;/li&gt;
&lt;li&gt;Sitios web&lt;/li&gt;
&lt;li&gt;Móvil&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Aparte, nos permite desarrollar nuestras propias aplicaciones e integrarlas aquí, pero eso obviamente escapa al alcance de esta serie de artículos.&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
Comienza el espectáculo&lt;/h2&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Lo primero y más evidente que activaremos será el mail. Se trata del mismo servicio de correo GMail, pero bajo nuestro dominio, en este caso @debugmachine.com. Para activar dicho servicio, vamos al panel de control principal y buscamos el link &lt;u&gt;Activar el correo electrónico&lt;/u&gt;.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Aquí viene el segundo punto delicado de la operación: de nuevo tenemos que ir al panel de gestión DNS de nuestro dominio para modificar los registros de tipo MX (que son los asociados al correo electrónico).&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En este caso, Google ya ha detectado que mi proveedor es uno bien conocido, GoDaddy.com, y me muestra las instrucciones específicas para el mismo, que reproduzco a continuación:&lt;/div&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Accede a tu cuenta en http://www.godaddy.com.&lt;/li&gt;
&lt;li&gt;Abre la pestaña Domains y selecciona My Domain Names. El sistema te dirigirá a la página Manage Domains.&lt;/li&gt;
&lt;li&gt;Haz clic en el nombre de dominio que deseas utilizar con Google Apps.&lt;/li&gt;
&lt;li&gt;En el panel Domain Details que queda a la derecha, selecciona el icono + debajo del elemento de lista Total DNS Control. Aparecerá una sublista.&lt;/li&gt;
&lt;li&gt;Haz clic en la entrada con el título Total DNS Control And MX Records. Aparecerá el panel Manage MX Records, and DNS Zone File.&lt;/li&gt;
&lt;li&gt;Haz clic en Launch Total DNS Control Manager Aparecerá la ventana DNS Manager.&lt;/li&gt;
&lt;li&gt;Borra todos los registros MX existentes haciendo clic en Delete.&lt;/li&gt;
&lt;li&gt;Haz clic en OK en el cuadro de diálogo de confirmación.&lt;/li&gt;
&lt;li&gt;Una vez que hayas suprimido todos los registros existentes, haz clic en Add New MX Record. Aparecerá MX (Mail Exchangers) Record Wizard.&lt;/li&gt;
&lt;li&gt;Para cada registro MX, introduce la información de acuerdo con los datos de la tabla siguiente.&lt;/li&gt;
&lt;/ol&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Para el menú desplegable Select the Priority Value, introduce el valor de prioridad.&lt;/span&gt;&lt;/li&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Para Enter a Host Name, deja la configuración predeterminada en @.&lt;/span&gt;&lt;/li&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Para Enter Goes To Address, escribe el nombre del servidor de Google en la tabla siguiente. Comprueba que hayas incluido el punto al final de cada registro.&lt;/span&gt;&lt;/li&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;Para el menú desplegable Select TTL Value, escribe 1 Week. Aparecerá como 604800 seconds en el sistema de DNS.&lt;/span&gt;&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;PriorityValue&lt;/td&gt;&lt;td&gt;HostName&lt;/td&gt;&lt;td&gt;Goes To Address (Mail Server)&lt;/td&gt;&lt;td&gt;TTL Value&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;@&lt;/td&gt;&lt;td&gt;ASPMX.L.GOOGLE.COM.&lt;/td&gt;&lt;td&gt;1 week&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;@&lt;/td&gt;&lt;td&gt;ALT1.ASPMX.L.GOOGLE.COM.&lt;/td&gt;&lt;td&gt;1 week&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;@&lt;/td&gt;&lt;td&gt;ALT2.ASPMX.L.GOOGLE.COM.&lt;/td&gt;&lt;td&gt;1 week&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;@&lt;/td&gt;&lt;td&gt;ASPMX2.GOOGLEMAIL.COM.&lt;/td&gt;&lt;td&gt;1 week&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;@&lt;/td&gt;&lt;td&gt;ASPMX3.GOOGLEMAIL.COM.&lt;/td&gt;&lt;td&gt;1 week&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;ol start=&quot;11&quot;&gt;
&lt;li&gt;Haz clic en&amp;nbsp;Continue.&lt;/li&gt;
&lt;li&gt;Haz clic en&amp;nbsp;Add&amp;nbsp;para confirmar cada entrada. La página principal de&amp;nbsp;DNS Manager&amp;nbsp;volverá a aparecer cuando hayas terminado.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez añadidos deben aparecer en vuestro panel DNS. Dejamos un ratito para que se propaguen los cambios, y ya podemos apretar el botón de confirmación en el panel de control de Google.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez terminado, nos vamos a la configuración del correo electrónico. Lo primero recomendable es crear una URL intuitiva para acceder a los distintos servicios a través de la WEB. Esto se realiza en la opción &quot;&lt;u&gt;&lt;b&gt;Cambiar url&lt;/b&gt;&lt;/u&gt;&quot;. Una vez ahí, clickamos de nuevo en &quot;&lt;u&gt;&lt;b&gt;Cambiar URL para todos los servicios&lt;/b&gt;&lt;/u&gt;&quot;. En esta página escogemos los subdominios que apuntarán a cada servicio. Yo he dejado los que me sugiere el propio Google. Me gustan.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFNdEdaMcRl9uj9Za4xHUwZxLlT2jazQLuJ-1aHT-sL-j9ZTgj-queZIZcnXi5aKLJKUcAeMjXP_uIG3Zo9dFHhiHU0hc9dBu6EzJYhv92-wJW2eGw8-tFwT8a98QlKVvIHGkXbftClwtj/s1600/Google-Apps9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFNdEdaMcRl9uj9Za4xHUwZxLlT2jazQLuJ-1aHT-sL-j9ZTgj-queZIZcnXi5aKLJKUcAeMjXP_uIG3Zo9dFHhiHU0hc9dBu6EzJYhv92-wJW2eGw8-tFwT8a98QlKVvIHGkXbftClwtj/s400/Google-Apps9.png&quot; width=&quot;352&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ahora de nuevo tenemos que ir al panel de control DNS de nuestro dominio (GoDaddy en mi caso) para dar de alta los correspondientes alias para cada servicio. El proceso es igual que cuando hicimos la verificación de dominio, es decir, añadiendo un registro de tipo &lt;b&gt;CNAME&lt;/b&gt;&amp;nbsp;para cada uno de &amp;nbsp;los anteriores, apuntando en este caso a &lt;b&gt;ghs.google.com&lt;/b&gt;. Una vez terminado debe quedar similar a esto:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikRzEOnONt0l7SvJJaHnbApvir27q7P9fSpTirtOUij96w0tvWMon6DmaOGZbJy5OOt3sTnqoKPMuwqySK5_wbi4Q5Hm2K8C89HbJUf2S1042Cu9GOLzoZkeQD_mmLhV5sKKMb3cxZhZV_/s1600/Google-Apps10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;196&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikRzEOnONt0l7SvJJaHnbApvir27q7P9fSpTirtOUij96w0tvWMon6DmaOGZbJy5OOt3sTnqoKPMuwqySK5_wbi4Q5Hm2K8C89HbJUf2S1042Cu9GOLzoZkeQD_mmLhV5sKKMb3cxZhZV_/s640/Google-Apps10.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ahora, dejando propagar los cambios, ya disponemos de nuestro flamante GMail, Calendar, Docs y Sites, accesibles por sus respectivas URLs.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Antes de nada, vamos a dar de alta una cuenta de correo personal. Para ello, aún en el panel de control de nuestro dominio, vamos a &quot;&lt;b&gt;&lt;u&gt;Usuarios y grupos&lt;/u&gt;&lt;/b&gt;&quot; (en la parte superior). Pulsamos en &quot;&lt;b&gt;&lt;u&gt;Crear un nuevo usuario&lt;/u&gt;&lt;/b&gt;&quot; y sólo tenemos que completar los datos:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnyLcpQTdgYvBOOcv_vw3wH12P91R2Bbo3rRzwBTQz57dDlhuMPzeQIFx3Tqa_ku9h4FKc4jlk3myGP9fSMd8pz9y7Lp7pF6yHIKH-3eSkzSyjXz9pzsEixo4-1zg0kwjOs3RvQHJnYVlW/s1600/Google-Apps11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnyLcpQTdgYvBOOcv_vw3wH12P91R2Bbo3rRzwBTQz57dDlhuMPzeQIFx3Tqa_ku9h4FKc4jlk3myGP9fSMd8pz9y7Lp7pF6yHIKH-3eSkzSyjXz9pzsEixo4-1zg0kwjOs3RvQHJnYVlW/s320/Google-Apps11.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Así de fácil. Ahora sólo falta dirigirnos a la url del correo: http://mail.debugmachine.com y entrar con cualquiera de las dos cuentas creadas:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz8YR4dcWaTwIXu-faZ5iFxQkP5ZcAidC3eeQdAeDZYlGTCfIPJ68Cy2UoXR52Ku1DClcAHPL_MLYM59y7fgUnlI0jiUTz75K8MZjEaCc-xDDZDBT9WQ1EZNxzDSKIlwiZ9axK_JSrUsVr/s1600/Google-Apps12.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz8YR4dcWaTwIXu-faZ5iFxQkP5ZcAidC3eeQdAeDZYlGTCfIPJ68Cy2UoXR52Ku1DClcAHPL_MLYM59y7fgUnlI0jiUTz75K8MZjEaCc-xDDZDBT9WQ1EZNxzDSKIlwiZ9axK_JSrUsVr/s320/Google-Apps12.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Y como cabía esperar, aquí tenemos nuestro flamante GMail (y el resto de servicios) con nuestro dominio:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi73R0rH22R8MA9n862hJYIdQuOSnNvAfkm1GIV93xI78xcCKVE2Rz-2b1tPKGDTzaT23VryPkA_cPIuFILHrURg_0wNuACZ63TTDwrwDKk4AkaePH8XuFcTWBqMVl3IzVMnVadp_DBUIaN/s1600/Google-Apps13.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;328&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi73R0rH22R8MA9n862hJYIdQuOSnNvAfkm1GIV93xI78xcCKVE2Rz-2b1tPKGDTzaT23VryPkA_cPIuFILHrURg_0wNuACZ63TTDwrwDKk4AkaePH8XuFcTWBqMVl3IzVMnVadp_DBUIaN/s640/Google-Apps13.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Para poder seguir administrando el dominio y todo su potencial, es necesario volver a entrar al mail, pero esta vez con el usuario &quot;admin&quot; que dimos de alta al principio de todo el proceso. De este modo nos aparecerá un link llamado &quot;administrar este dominio&quot;.&lt;/div&gt;
&lt;br /&gt;
Pues por hoy lo dejamos aquí. En la siguientes entregas veremos más cosas interesantes:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Cómo sacar partido al sistema de etiquetas y filtros de Gmail.&lt;/li&gt;
&lt;li&gt;Cómo acceder al buzón a través de Outlook, Thunderbird, etc. (usando el protocolo IMAP)&lt;/li&gt;
&lt;li&gt;Cómo sincronizar nuestros contactos con los de Gmail&lt;/li&gt;
&lt;li&gt;Cómo usar los calendarios de Google y cómo vincularlos a Thunderbird&lt;/li&gt;
&lt;li&gt;Cómo usar una libreta de contactos compartida entre miembros, y cómo usar calendarios y buzones compartidos.&lt;/li&gt;
&lt;li&gt;Cómo asociar otros nombres de dominio que tengáis para que trabajen como alias del principal con Google Apps.&lt;/li&gt;
&lt;li&gt;Cambiar el look &amp;amp; feel de Google Apps para incluir nuestros logotipos y colores corporativos.&lt;/li&gt;
&lt;li&gt;Otras muchas cosas...&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Mientras tanto os voy dejando digerir esta parte inicial antes de meternos en otras guerras. Espero vuestros comentarios y espero poderos ayudar con cualquier duda que os surja.&lt;/div&gt;
&lt;br /&gt;
Au revoir!&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left;&quot;&gt;&lt;/td&gt;&lt;td style=&quot;text-align: right;&quot;&gt;&lt;a href=&quot;http://debugmachine.blogspot.com/2010/04/ahorro-de-costes-con-google-apps-ii.html&quot;&gt;Siguiente &amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/3989061943816393570/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2010/04/ahorro-de-costes-con-google-apps-i.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3989061943816393570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3989061943816393570'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2010/04/ahorro-de-costes-con-google-apps-i.html' title='Ahorro de costes con Google Apps (I). Puesta en marcha.'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxBSwJAKLye5NsOjdG7cqzIv5fv_VK48vB5c632O2l6DFUWx5iRzOp3aIinqeuYu_zLPL1GORGiRhKAfryl8NCi9tKu7lUWqIPoB188DF6Co7H5Dr3gSh-AznMs-a5L0UmawOoYQEouVg_/s72-c/Google-Apps1.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-5453905112481925480</id><published>2010-03-22T10:06:00.002+01:00</published><updated>2013-02-18T22:05:30.425+01:00</updated><title type='text'>Alerta phishing en Facebook</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Hola,&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
me ha sorprendido recibir un mensaje a través de Facebook que provenía de uno de mis contactos, pero cuyo texto estaba escrito en un mal español (mezclado con portugués probablemente).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Se trata de un intento de &lt;a href=&quot;http://es.wikipedia.org/wiki/phishing&quot;&gt;phishing&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El texto que me ha llegado es:&lt;/div&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #e0ffe0; font-family: &#39;lucida grande&#39;,tahoma,verdana,arial,sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
&lt;span bindpoint=&quot;authorLinkWrapper&quot; class=&quot;GBThreadMessageRow_AuthorLink_Wrapper&quot; style=&quot;color: #333333; font-size: 13px; font-weight: bold;&quot;&gt;&lt;a class=&quot;GBThreadMessageRow_AuthorLink&quot; href=&quot;http://www.facebook.com/profile.php?id=14621155781&quot; style=&quot;color: #3b5998; cursor: pointer; text-decoration: underline;&quot;&gt;Mónica Belucci&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;GBThreadMessageRow_Date&quot; style=&quot;color: #777777; font-size: 11px; margin-bottom: 4px;&quot;&gt;21 March at 21:31&lt;/span&gt;&lt;span bindpoint=&quot;branchLinkWrapper&quot; class=&quot;GBThreadMessageRow_BranchLink&quot;&gt;&lt;/span&gt;&lt;span bindpoint=&quot;reportLinkWrapper&quot; class=&quot;GBThreadMessageRow_ReportLink&quot; style=&quot;color: #777777; font-size: 11px; margin-bottom: 4px;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Body&quot; style=&quot;color: #333333; float: left; font-size: 13px; overflow: hidden; width: 460px;&quot;&gt;
&lt;div class=&quot;GBThreadMessageRow_Body_Content&quot;&gt;
esta es la tua foto o no?.&amp;nbsp;&lt;a href=&quot;http://flz914061443265.phototime-15.co/id735rp/&quot; onmousedown=&quot;UntrustedLink.bootstrap($(this), &amp;quot;6bc0f1b0c1304c5e5dcd83ff49227a7b&amp;quot;, event)&quot; rel=&quot;nofollow&quot; style=&quot;color: #3b5998; cursor: pointer; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;http://flz914061443265.phototime-15.com/id735rp/&lt;/a&gt;&lt;br /&gt;
Buena suerte!!!!&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_ReferrerLink&quot; style=&quot;color: #777777; font-size: 9px; margin: 10px 0px 0px;&quot;&gt;
Sent via&amp;nbsp;&lt;a href=&quot;http://www.facebook.com/mobile/&quot; style=&quot;color: #3b5998; cursor: pointer; text-decoration: none;&quot;&gt;Facebook Mobile&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: &#39;lucida grande&#39;,tahoma,verdana,arial,sans-serif; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
&lt;span bindpoint=&quot;authorLinkWrapper&quot; class=&quot;GBThreadMessageRow_AuthorLink_Wrapper&quot; style=&quot;color: #333333; font-size: 13px; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black; font-size: medium; font-weight: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
&lt;span bindpoint=&quot;authorLinkWrapper&quot; class=&quot;GBThreadMessageRow_AuthorLink_Wrapper&quot; style=&quot;color: #333333; font-size: 13px; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black; font-size: medium; font-weight: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span bindpoint=&quot;authorLinkWrapper&quot; class=&quot;GBThreadMessageRow_AuthorLink_Wrapper&quot; style=&quot;color: #333333; font-size: 13px; font-weight: bold;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: black; font-size: medium; font-weight: normal;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px; text-align: justify;&quot;&gt;
El texto me ha llegado dentro del propio Facebook, lo cuál quiere decir que no proviene de un usuario falso, como suele ocurrir en los e-mails. Según la última línea, podría ser desde un móvil. Eso indica que puede ser un virus de móvil, que los hay, o un troyano desde el equipo infectado de dicho contacto.&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px; text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px; text-align: justify;&quot;&gt;
Si pincháis en el enlace, os lleva a una página aparentemente idéntica a la de Facebook, pero cuyo dominio es otro externo; ahí os piden vuestro usuario y vuestra password, y por nada del mundo debéis escribirlos o los estaréis entregando al ciberpirata de turno.&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
En la siguiente captura os muestro la página falsa.&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNm1LvzS8aTtAxUutwpSogYGhswK5xgAPV91c5YI3pT7YzD4MeT5FO3MNvPj8jlUElf5udmtHF27yRIe3A7kY2g958ys4tTeo9Iw2QApTAiC4xQuzrvWg__Q46TpMLGR_p0FKx2g3mimrn/s1600-h/phishing.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;258&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNm1LvzS8aTtAxUutwpSogYGhswK5xgAPV91c5YI3pT7YzD4MeT5FO3MNvPj8jlUElf5udmtHF27yRIe3A7kY2g958ys4tTeo9Iw2QApTAiC4xQuzrvWg__Q46TpMLGR_p0FKx2g3mimrn/s320/phishing.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
Mucho cuidadín, ¡no caigáis en la trampa!&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;GBThreadMessageRow_Info&quot; style=&quot;margin-bottom: 4px;&quot;&gt;
Besitos.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
P.D. Ni que decir tiene que el mensaje no venía de Mónica Belucci, pero entenderéis que no ponga el nombre real de la persona en cuestión.&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
(Previamente publicado en &lt;a href=&quot;http://misshapenreality.blogspot.com/2010/03/alerta-phishing-en-facebook.html&quot;&gt;Misshapen Reality&lt;/a&gt;)</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/5453905112481925480/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2010/03/hola-me-ha-sorprendido-recibir-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5453905112481925480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/5453905112481925480'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2010/03/hola-me-ha-sorprendido-recibir-un.html' title='Alerta phishing en Facebook'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNm1LvzS8aTtAxUutwpSogYGhswK5xgAPV91c5YI3pT7YzD4MeT5FO3MNvPj8jlUElf5udmtHF27yRIe3A7kY2g958ys4tTeo9Iw2QApTAiC4xQuzrvWg__Q46TpMLGR_p0FKx2g3mimrn/s72-c/phishing.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3461851412014662219.post-3269597787639702231</id><published>2010-02-23T00:52:00.000+01:00</published><updated>2013-02-18T22:05:44.423+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Dynamics"/><category scheme="http://www.blogger.com/atom/ns#" term="error"/><category scheme="http://www.blogger.com/atom/ns#" term="File"/><category scheme="http://www.blogger.com/atom/ns#" term="instalación"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="MSXML6"/><category scheme="http://www.blogger.com/atom/ns#" term="NAV"/><category scheme="http://www.blogger.com/atom/ns#" term="Protection"/><category scheme="http://www.blogger.com/atom/ns#" term="SFC"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="WFP"/><title type='text'>Más errores del parser XML de Microsoft (MSXML)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
En mi &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;amp;FamilyID=59914795-60c7-4ebe-828d-f28cb457e6e3&quot;&gt;anterior entrada&lt;/a&gt; explicaba un problema bastante común en distintas versiones de Windows (estación y servidor) debido a un fallo en el registro de una DLL relacionada con el motor de parseo XML de Microsoft.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Vimos los problemas más comunes y un sencillo procedimiento para arreglar el problema, consistente en el registro manual de uno o varios archivos DLL.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Pues además, como ya adelantaba, existe una variante de este mismo problema causado por la actualización del MSXML versión 6 de Microsoft en Windows XP con el SP3 o versiones superiores del sistema operativo de Microsoft.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Dicha actualización se produce, por ejemplo, durante la instalación del cliente de &lt;a href=&quot;http://es.wikipedia.org/wiki/Microsoft_Dynamics_NAV&quot;&gt;Microsoft Dynamics NAV&lt;/a&gt; (o lo que antiguamente llamábamos Navision), y más concretamente durante la parte &amp;nbsp;en que se instala el motor de SQL Server 2005 en la misma estación de trabajo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La razón del fallo es que Microsoft ha protegido ciertos archivos del sistema contra sobreescritura mediante un sistema llamado&amp;nbsp;WFP (&lt;a href=&quot;http://es.wikipedia.org/wiki/Microsoft_Dynamics_NAV&quot;&gt;Windows File Protection&lt;/a&gt;) como medida desesperada para luchar contra el malware y los problemas inherentes a la arquitectura de Windows. El archivo MSXML6R.DLL está incluido dentro de este programa de protección. Y el sistema funciona tan bien, o tan mal, según se mire, que inhibe la sobrescritura de dicho archivo incluso para las propias herramientas de Microsoft.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por tanto, como ya os imagináis, al llegar al momento de actualizar la MSXML6, el sistema intenta primero desinstalar la actual MSXML6 para reinstalar la nueva versión. La DLL queda &quot;desregistrada&quot;, pero la actualización de la misma nunca llega a producirse por el error de escritura. La aplicación se suele dejar terminar de instalar ignorando ese archivo, pero el sistema ya queda &quot;tocado&quot; de muerte con síntomas similares a los descritos en mi anterior artículo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La &lt;a href=&quot;http://support.microsoft.com/kb/958897&quot;&gt;vergonzosa respuesta&lt;/a&gt; de Microsoft sobre este problema es inconcebible. &quot;Sí, esto es lo que pasa, y si lo quieres bien, y si no, ajo y agua&quot;.&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
La promiscuidad es sana&lt;/h3&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A pesar del problema, la mayoría de las veces se puede reparar si se vuelve a registrar manualmente de forma similar al &lt;a href=&quot;http://debugmachine.blogspot.com/2010/02/errores-del-parser-xml-de-microsoft.html&quot;&gt;artículo anterior&lt;/a&gt;, pero con el archivo MSXML6R.DLL, ya que aunque el registro de dicha biblioteca esté defectuoso, el archivo está físicamente en su lugar.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Aún así, una forma de evitar este problema es desactivar el Windows File Protection que provoca tantos quebraderos de cabeza incluso a sus propios autores. Para ello tenemos dos opciones:&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Desinstalar temporalmente el SP3; tiene el inconveniente de que es un proceso muy lento y luego hay que volverlo a instalar. Además, no se aconseja si ya se han instalado nuevas actualizaciones o aplicaciones posteriores a la instalación de dicho SP3.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Desinhibir el WFP a partir del siguiente inicio. Implica más reinicios del sistema, pero es más limpio. Para ello hay que cambiar el siguiente valor en el registro (y si no existe, crearlo):&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
Ruta de la clave: HKLM\Software\Microsoft\Windows NT\Currentversion\Winlogon&lt;/blockquote&gt;
&lt;blockquote&gt;
Nombre del valor:&amp;nbsp;SFCDisable&lt;/blockquote&gt;
&lt;blockquote&gt;
Tipo de dato: DWORD&lt;/blockquote&gt;
&lt;blockquote&gt;
Dato del valor: 0 = Activado (opción por defecto), 1=desactivado (pregunta en el siguiente arranque), 2=desactivado tras reiniciar, 4=activado con avisos desactivados&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Lo mejor para nuestro caso particular es ponerlo a 2 y reiniciar el equipo. A partir de ese momento podemos probar la reinstalación. Si ésta vuelve a fallar, entonces lo mejor es ejecutar manualmente la actualización del MSXML versión 6. De esta forma, el instalador del SQL Server 2005 o del Dynamics NAV se saltará este paso al encontrar que la versión instalada es posterior, lo que evitará el problema.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Se puede actualizar manualmente la MSXML6 descargando la actualización de la siguiente ruta:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;amp;FamilyID=59914795-60c7-4ebe-828d-f28cb457e6e3&quot;&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;amp;FamilyID=59914795-60c7-4ebe-828d-f28cb457e6e3&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Espero que haya sido de utilidad este truqui, pues por algo tan simple a veces se pueden perder horas o días de trabajo si no se tiene la solución.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Si hay algo que me viene a la mente al pensar en este fallo, es la muerte del loro.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Buenas noches.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://debugmachine.blogspot.com/feeds/3269597787639702231/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://debugmachine.blogspot.com/2010/02/mas-errores-del-parser-xml-de-microsoft.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3269597787639702231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3461851412014662219/posts/default/3269597787639702231'/><link rel='alternate' type='text/html' href='http://debugmachine.blogspot.com/2010/02/mas-errores-del-parser-xml-de-microsoft.html' title='Más errores del parser XML de Microsoft (MSXML)'/><author><name>José Ángel Morente</name><uri>http://www.blogger.com/profile/12510837998725893450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>