<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-2501386953683014506</id><updated>2024-12-19T04:33:07.131+01:00</updated><category term="Linux"/><category term="Sistemas"/><category term="Scripts"/><category term="Seguridad"/><category term="Vim"/><category term="Ssh"/><category term="Unix"/><category term="Virtualización"/><category term="Vmware"/><category term="Auditoría"/><category term="Microsoft"/><category term="Python"/><category term="Redes"/><category term="ISA Server"/><category term="Logs"/><category term="Oracle"/><category term="Pocket pc"/><title type="text">Más vale maña ...</title><subtitle type="html">Informática - Sistemas, Redes y más</subtitle><link href="http://masvale-manya.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default?redirect=false" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/" rel="alternate" type="text/html"/><link href="http://pubsubhubbub.appspot.com/" rel="hub"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><generator uri="http://www.blogger.com" version="7.00">Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-5922466574422372179</id><published>2011-06-18T21:36:00.005+02:00</published><updated>2011-06-22T15:44:55.491+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Scripts"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><category scheme="http://www.blogger.com/atom/ns#" term="Virtualización"/><category scheme="http://www.blogger.com/atom/ns#" term="Vmware"/><title type="text">Script para instalar WmwareTools en Linux</title><content type="html">Tengo varias máquinas virtuales de vmware sin las X instaladas y cada vez que tengo que instalar las VmwareTools o actualizarlas debo:&lt;br /&gt;
&lt;br /&gt;
- Montar el cdrom.&lt;br /&gt;
- Instalar los paquetes necesarios.&lt;br /&gt;
- Copiar el archivo comprimido.&lt;br /&gt;
- Descomprimirlo.&lt;br /&gt;
- Instalarlas.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Algunos dirán que tampoco es tanto trabajo y tienen toda la razón, pero cuando tienes que hacerlo bastantes veces la tarea te resulta cuanto menos tediosa. Así que he decidido realizar un sencillo script en bash para automatizar las tareas antes descritas. Incluso la instalación de paquetes de las distribuciones que uso (RedHat, CentOS, Debian, Ubuntu) sin tener que especificarlo.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim vmtools.sh&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;#!/bin/bash -&lt;br /&gt;
#==============================================================================&lt;br /&gt;
# &amp;nbsp; &amp;nbsp; &amp;nbsp; ARCHIVO: &amp;nbsp;vmtools.sh&lt;br /&gt;
# &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USO: &amp;nbsp;./vmtools.sh&lt;br /&gt;
#&lt;br /&gt;
# &amp;nbsp; DESCRIPCION: &amp;nbsp;Monta Cd de VmwareTools, verifica la instalación de los&lt;br /&gt;
#&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;paquetes necesarios según la distribución (redhat/Centos/&lt;br /&gt;
# &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Debian/Ubuntu), copia y descomprime el archivo e&lt;br /&gt;
#&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inicia la instalación.&lt;br /&gt;
#&lt;br /&gt;
# &amp;nbsp; &amp;nbsp; &amp;nbsp;OPCIONES: &amp;nbsp;---&lt;br /&gt;
# &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NOTAS: &amp;nbsp;---&lt;br /&gt;
# &amp;nbsp; &amp;nbsp;REQUISITOS: &amp;nbsp;Tener permisos de root&lt;br /&gt;
# &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AUTHOR: &amp;nbsp;Nebur (Más Vale Manya ...), masvalemanya@gmail.com&lt;br /&gt;
# &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WEB: &amp;nbsp;http://masvale-manya.blogspot.com&lt;br /&gt;
# &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CREADO: &amp;nbsp;16/06/11&lt;br /&gt;
#==============================================================================&lt;br /&gt;
&lt;br /&gt;
set -o nounset &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Treat unset variables as an error&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
# &amp;nbsp;Verifica que somos root y sino salimos&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
if [ $UID -ne 0 ]; then&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;echo "Necesitas ser root para que el script funcione!"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;exit&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
# &amp;nbsp;Creando directorio si es necesario&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
dir="/media/cdrom"&lt;br /&gt;
if [ ! -d $dir ]; then&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;mkdir $dir&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
# &amp;nbsp;Verifica si el cdrom esta montado y sino lo monta&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
mens="motar el cdrom ..."&lt;br /&gt;
echo "$mens"&lt;br /&gt;
echo ""&lt;br /&gt;
montado=$(mount | grep "^/dev/sr0")&lt;br /&gt;
if [ -z "$montado" ]; then&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;cont=0&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;while [ $cont == 0 ]; do&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;error="No se ha podido montar el cdrom"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;elegir="Quieres volver a intentarlo? (1)SI (2)No"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;mal="Solo puedes elegir (1) para si o (2) para no"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;cdrom="/dev/cdrom"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;mount -t iso9660 $cdrom $dir &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; cont=1 || cont=0&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if [ $cont == 0 ]; then&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;resp=0&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;while [ $resp != 1 ] || [ $resp != 2 ]; do&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;echo "$error"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;echo "$elegir"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;read resp&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;case $resp in&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;1)&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;echo "Volviendo a $mens"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;echo ""&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;;;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;2)&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;exit&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;;;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;"")&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;resp=1&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;echo "Volviendo a $mens"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;echo ""&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;;;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;*)&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;echo "$mal"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;;;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;esac &amp;nbsp; &amp;nbsp;# --- end of case ---&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;done&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;fi&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;done&lt;br /&gt;
else&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;dir=$(mount | grep "^/dev/sr0" | cut -d' ' -f3)&lt;br /&gt;
fi&lt;br /&gt;
mens="Cdrom montado con exito ..."&lt;br /&gt;
echo "$mens"&lt;br /&gt;
echo ""&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
# &amp;nbsp;Instala los paquetes necesarios según distribución&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
inst="Instalando los requisitos necesarios ..."&lt;br /&gt;
echo "$inst"&lt;br /&gt;
echo ""&lt;br /&gt;
rhc="autoconf automake gcc gcc-c++ kernel-devel"&lt;br /&gt;
ud="autoconf automake binutils cpp build-essential gcc linux-headers-$(uname -r)"&lt;br /&gt;
error="No se han podido instalar los paquetes necesarios. Intente instalarlos y vuelva a ejecutar el script. Los paquetes son: "&lt;br /&gt;
paquet=""&lt;br /&gt;
if [ -f "/etc/redhat-release" ]; then&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;paquet="$rhc"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;yum -y install $paquet &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; cont=1 || cont=0&lt;br /&gt;
elif [ -f "/etc/debian-release" ] || [ -f "/etc/lsb-release" ]; then&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;apt=$(dpkg -l aptitude | grep -w "aptitude" | grep "^ii")&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if [ ! -z "$apt" ]; then&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;orden="aptitude"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;else&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;orden="apt-get"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;fi&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;paquet="$ud"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;$orden -y install $paquet &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; cont=1 || cont=0&lt;br /&gt;
fi&lt;br /&gt;
if [ $cont == 1 ]; then&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;inst="Cambios realizados con exito ..."&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;echo "$inst"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;echo ""&lt;br /&gt;
else&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;echo "$error$ud"&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;echo ""&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;exit&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
# &amp;nbsp;Copiar vmware-tools e iniciar su instalación&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
inst="Preparando la instalación ..."&lt;br /&gt;
echo "$inst"&lt;br /&gt;
echo ""&lt;br /&gt;
pretools="/VMwareTools*"&lt;br /&gt;
c_tools=$(echo "$(ls $dir$pretools)")&lt;br /&gt;
a_tools=$(echo "$c_tools" | awk -F "/" '{print $NF}')&lt;br /&gt;
tools="vmware-tools-distrib"&lt;br /&gt;
&lt;br /&gt;
cp $c_tools /tmp&lt;br /&gt;
cd /tmp&lt;br /&gt;
tar xzvf $a_tools &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
cd $tools&lt;br /&gt;
./vmware-install.pl&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Y como siempre le damos permisos de ejecución&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;chmod +x vmtools.sh&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/5922466574422372179/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/5922466574422372179" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/5922466574422372179" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/5922466574422372179" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2011/06/script-para-instalar-wmwaretools-en.html" rel="alternate" title="Script para instalar WmwareTools en Linux" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-4425809981415947912</id><published>2011-04-28T21:19:00.001+02:00</published><updated>2011-04-28T21:26:37.961+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><category scheme="http://www.blogger.com/atom/ns#" term="Virtualización"/><category scheme="http://www.blogger.com/atom/ns#" term="Vmware"/><title type="text">Vmware player / workstation en Ubuntu Natty x64</title><content type="html">Llevo unos pocos días probando la última y polémica versión de Ubuntu, la denominada Natty Narwhal y como casi siempre últimamente me dio errores la instalación de vmware. Para empezar,  la versión que se instala es la 7.1.4 para workstation y 3.1.4 del player. La instalación es correcta pero a la hora de abrir una maquina virtual se cierra la aplicación y me devuelve un error como este&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;...&lt;br /&gt;
(vmware-unity-helper:xxxx): GLib-WARNING **: /build/buildd/glib2.0-2.28.6/./glib/goption.c:2132: ignoring no-arg, optional-arg or filename flags (8) on option of type 0&lt;br /&gt;
(vmware-unity-helper:xxxx): GLib-WARNING **: /build/buildd/glib2.0-2.28.6/./glib/goption.c:2132: ignoring no-arg, optional-arg or filename flags (8) on option of type 0&lt;br /&gt;
...&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Para solucionar este &lt;a href="https://bugs.launchpad.net/ubuntu/+source/overlay-scrollbar/+bug/770625"&gt;bug&lt;/a&gt; tenemos que añadir la siguiente linea al principio del lanzador de vmware&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim /usr/bin/vmware&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;export LD_PRELOAD=/usr/lib/vmware/lib/libglib-2.0.so.0/libglib-2.0.so.0&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Con esto me sigue devolviendo algún error porque no pinta bien alguna parte de la ventana de vmware, pero es totalmente funcional. Supongo que esto se vera solucionado del todo en proximos parches y/o versiones.</content><link href="http://masvale-manya.blogspot.com/feeds/4425809981415947912/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/4425809981415947912" rel="replies" title="2 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/4425809981415947912" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/4425809981415947912" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2011/04/vmware-player-workstation-en-ubuntu.html" rel="alternate" title="Vmware player / workstation en Ubuntu Natty x64" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-3404413667752244156</id><published>2011-03-23T21:39:00.003+01:00</published><updated>2011-03-24T20:53:20.711+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Logs"/><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><category scheme="http://www.blogger.com/atom/ns#" term="Ssh"/><title type="text">Separar el log de Ssh</title><content type="html">Días atrás mostré como &lt;a href="http://masvale-manya.blogspot.com/2010/12/securizar-ssh.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+masvale-manya+%28M%C3%A1s+vale+ma%C3%B1a+...+%29"&gt;Securizar SSH&lt;/a&gt; y deje pendiente como separar el log de ssh. Esto es bastante cómodo si tienes ssh a la vista y quieres revisar sus eventos, ataques, ... evitando el "ruido" y los eventos de otros servicios.&lt;br /&gt;
&lt;br /&gt;
Esto se puede aplicar no solo para ssh sino para cualquier servicio que deseemos. Los cambios los realizaré en un Ubuntu Maverik pero es transcribible a cualquier distribución o unix que use rsyslogd. Lo primero es decirle que cuando encuentre una línea de log que contenga ssh nos lo escriba en un archivo aparte. Creamos el siguiente archivo y escribimos el siguiente contenido&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;code&gt;sudo vim /etc/rsyslog.d/49-ssh.conf&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;:msg,contains,"ssh" /var/log/ssh.log&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ahora reiniciamos rsyslog y ya tenemos nuestros logs de ssh en /var/log/ssh.log&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo reload rsyslog&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Lo que nos queda es crear la rotación de logs para que en cada tiempo indicado cree un backup y vacie el archivo, guardando tantos backups como queramos. Para ello configuraremos logrotate, que es el encargado de estas funciones. Creamos el siguiente archivo con este contenido&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim /etc/logrotate.d/ssh&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;/var/log/ssh.log&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rotate 4&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; weekly&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; missingok&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notifempty&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; compress&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delaycompress&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; postrotate&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reload rsyslog &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || true&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; endscript&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Con lo que conseguimos que rote cada semana, conserve 4 backups, los comprima dejando uno sin comprimir y recargue rsyslog después de cada rotación. Para más información de todas la opciones disponibles de logrotate podemos consultar&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;man logrotate&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/3404413667752244156/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/3404413667752244156" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/3404413667752244156" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/3404413667752244156" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2011/03/separar-el-log-de-ssh.html" rel="alternate" title="Separar el log de Ssh" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-8910090985870299196</id><published>2011-03-08T18:54:00.063+01:00</published><updated>2011-03-11T01:06:54.307+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Vim"/><title type="text">Vim como python ide II</title><content type="html">Llevo unos días usando la modificación que hice para preparar a &lt;a href="http://masvale-manya.blogspot.com/2011/02/vim-como-python-ide.html"&gt;vim como python ide&lt;/a&gt; y he hecho unas modificaciones que he visto que me eran útiles y/o necesarias. Por si a alguien le resulta útil dejo aquí las modificaciones y algunos comandos interesantes.&lt;br /&gt;
&lt;br /&gt;
Como he empezado desde cero y lógicamente no me he leído toda la documentación sino unas pocas cosas básicas y luego un poco a medida de mis necesidades cometo algunos errores. Para hacer una primera criba instalé &lt;a href="http://www.logilab.org/857"&gt;pylint&lt;/a&gt; y su &lt;a href="http://www.vim.org/scripts/script.php?script_id=891"&gt;pluguin para vim&lt;/a&gt; que te indica donde has cometido errores y/o "errores" según los &lt;a href="http://www.python.org/dev/peps/"&gt;PEP&lt;/a&gt; de python (estos últimos son recomendaciones).&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Instalamos los paquetes necesarios&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo aptitude install pylint&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Creamos el directorio apropiado y descargamos en el el pluguin&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;mkdir ~/.vim/compiler&lt;br /&gt;
cd ~/.vim/compiler&lt;br /&gt;
wget http://www.vim.org/scripts/download_script.php?src_id=10365&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Activamos el funcionamiento escribiendo lo siguiente y conseguimos que cada vez que grabemos un archivo escrito en python nos muestre todos nuestros errores y así podamos corregirlos rápidamente.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vim/ftplugin/python.vim&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;compiler pylint&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si queremos que no se nos muestre cada vez que grabemos escribiremos lo siguiente &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;let g:pylint_onwrite = 0&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
y simplemente escribimos o mapeamos&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:Pylint&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
El autocompletado de python funciona bien, pero te reconoce funciones, clases de módulos importados o creadas por ti. Luego tienes Ctrl+P o Ctrl+N que te reconoce cualquier palabra de tu archivo u otro que tengas abierto. Así que si quisieras que reconozca por ejemplo raw_input o print sin que lo tengas escrito no lo hace. Solucioné esto creándome un diccionario para python o sea un archivo con las palabras que quieras (una en cada línea). Según el ejemplo anterior&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;mkdir ~/.vim/dictionaries/python&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;raw_input(&lt;br /&gt;
print&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ahora lo activamos y lo mapeamos para mayor agilidad y si escribiéramos ra y pulsáramos la tecla nos devolvería raw_input(&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vim/ftplugin/python.vim&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;set dictionary=$HOME/.vim/dictionaries/python&lt;br /&gt;
imap &amp;lt;F5&amp;gt; &amp;lt;C-x&amp;gt;&amp;lt;C-k&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Otro aporte interesante es &lt;a href="http://www.thegeekstuff.com/2008/12/vi-and-vim-autocommand-3-steps-to-add-custom-header-to-your-file/"&gt;añadir una cabecera automáticamente&lt;/a&gt; cuando creemos un archivo.py. Para ello primero creamos un archivo con el el contenido de nuestra cabecera.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;mkdir ~/.vim/templates&lt;br /&gt;
vim python_head&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;:insert&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
# -*- coding: utf8 -*-&lt;br /&gt;
#==============================================================================&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARCHIVO:&amp;nbsp; ARXIVO&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USO:&amp;nbsp; ---&lt;br /&gt;
# &lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OPCIONES:&amp;nbsp; ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp; REQUISITOS:&amp;nbsp; ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTAS:&amp;nbsp; ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AUTOR:&amp;nbsp; ATOR&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WEB:&amp;nbsp; VEB&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CREADO:&amp;nbsp; KREA&lt;br /&gt;
#==============================================================================&lt;br /&gt;
#== DESCRIPCION:&lt;br /&gt;
.&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Luego colocamos lo siguiente en vimrc que, aparte de escribir la cabecera sustituirá los valores por los datos correctos que le indiquemos&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;autocmd bufnewfile *.py so $HOME/.vim/templates/python_head&lt;br /&gt;
autocmd bufnewfile *.py exe "1," . 13 . "g/ARXIVO.*/s//" .expand("%")&lt;br /&gt;
autocmd bufnewfile *.py exe "1," . 13 . "g/ATOR.*/s//Nebur (Más Vale Manya ...), masvalemanya@gmail.com"&lt;br /&gt;
autocmd bufnewfile *.py exe "1," . 13 . "g/VEB.*/s//masvale-manya.blogspot.com"&lt;br /&gt;
autocmd bufnewfile *.py exe "1," . 13 . "g/KREA.*/s//" .strftime("%c")&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Esto lo encontré en la documentación de &lt;a href="http://masvale-manya.blogspot.com/2010/07/usar-vim-como-bash-script-ide.html"&gt;bash-support&lt;/a&gt; y consiste en que cierre automáticamente las comillas dobles y simples, los paréntesis, corchetes y claves y ponga el cursor en medio para empezar a escribir. También lo prepararemos para que en modo visual escribiendo el símbolo inicial nos coloque no a cada lado de una selección.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;left&gt;&lt;br /&gt;
&lt;/left&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;inoremap ( ()&amp;lt;Left&amp;gt;&lt;br /&gt;
inoremap [ []&amp;lt;Left&amp;gt;&lt;br /&gt;
inoremap { {}&amp;lt;Left&amp;gt;&lt;br /&gt;
vnoremap ( s()&amp;lt;Esc&amp;gt;P&lt;br /&gt;
vnoremap [ s[]&amp;lt;Esc&amp;gt;P&lt;br /&gt;
vnoremap { s{}&amp;lt;Esc&amp;gt;P&lt;br /&gt;
vnoremap&amp;nbsp; '&amp;nbsp; s''&amp;lt;Esc&amp;gt;P&amp;lt;Right&amp;gt;&lt;br /&gt;
vnoremap&amp;nbsp; "&amp;nbsp; s""&amp;lt;Esc&amp;gt;P&amp;lt;Right&amp;gt;&lt;br /&gt;
vnoremap&amp;nbsp; `&amp;nbsp; s``&amp;lt;Esc&amp;gt;P&amp;lt;Right&amp;gt;&lt;br /&gt;
inoremap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;nbsp; '&amp;lt;Esc&amp;gt;:call QuoteInsertionWrapper("'")&amp;lt;CR&amp;gt;a&lt;br /&gt;
inoremap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp; "&amp;lt;Esc&amp;gt;:call QuoteInsertionWrapper('"')&amp;lt;CR&amp;gt;a&lt;br /&gt;
inoremap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; `&amp;nbsp; `&amp;lt;Esc&amp;gt;:call QuoteInsertionWrapper('`')&amp;lt;CR&amp;gt;a&lt;br /&gt;
&lt;br /&gt;
function! QuoteInsertionWrapper (quote)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; let&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; col&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = col('.')&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if getline('.')[col-2] !~ '\k' &amp;amp;&amp;amp; getline('.')[col] !~ '\k'&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; normal ax&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exe "normal r".a:quote."h"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;
endfunction&amp;nbsp;&amp;nbsp;&amp;nbsp; " ----------&amp;nbsp; end of function QuoteInsertionWrapper&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
A veces nuestro código es muy largo y otro truco es el autoplegado automático. Las clases, funciones apareceran con un + al principio y muestra el nombre y el principio de su docstring en una línea, para que lo despleguemos cuando queramos. Como ya tengo un archivo en ftpluguin para que se active solo cuando use un archivo escrito en python me descargue &lt;a href="http://www.vim.org/scripts/script.php?script_id=515"&gt;el siguiente pluguin&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;wget http://www.vim.org/scripts/download_script.php?src_id=4431&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Y copie su contenido en ~/.vim/ftplugin/python.vim&lt;br /&gt;
&lt;br /&gt;
Como muchas veces trabajo con gnome-terminal tiene mapeado Ctrl+- y Ctrl++ para hacer más grande o pequeña la ventana de gnome, no podía hacer mas grande o pequeña línea a línea un split o vsplit. Para evitar esto y hacerlo más sencillo&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;map - &amp;lt;C-w&amp;gt;-&lt;br /&gt;
map + &amp;lt;C-w&amp;gt;+&lt;br /&gt;
map &amp;lt; &amp;lt;C-w&amp;gt;&amp;lt;&lt;br /&gt;
map &amp;gt; &amp;lt;C-w&amp;gt;&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Cuando pegamos algo desde fuera de vim normalmente se identa y has de ir eliminando las sangrías, ... Vim tiene un modo copiar donde esto no sucede. Por comodidad lo mapee y asi se activa y desactiva con una tecla&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;set pastetoggle=&amp;lt;F12&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para que cuando presionemos Ctrl+P o Ctrl+N nos devuelva las palabras completas no partidas. Ejemplo: cadena (sino aparece sola) en vez de cadena.split()&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vim/ftplugin/python.vim&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;set iskeyword+=.&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si usamos algunas palabras muy usualmente como por ejemplo, pongamos que en cada archivo ponemos masvale-manya.blogspot.com podemos automatizarlo para que escribiendo azs (que no forme parte de otra palabra) nos lo escriba.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;ab azs masvale-manya.blogspot.com&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Por último unos comandos interesantes&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:mksession! archivo "te guarda tu estado actual (ventanas, bufers, ...) en archivo&lt;br /&gt;
:source archivo "te restaura el estado que este guardado en archivo&lt;br /&gt;
:w !sudo tee % "te permite guardar un archivo cuando no lo has abierto con sudo&lt;br /&gt;
:tab sba "convierte todos los bufers en pestañas&lt;br /&gt;
:wall "grabar todos los bufers&lt;br /&gt;
:qall "cerrar todas las ventanas&lt;br /&gt;
zo "Expande un pliegue&lt;br /&gt;
zc "Contrae un pliegue&lt;br /&gt;
zR "Expande todos los pliegues&lt;br /&gt;
zM "Contrae todos los pliegues&lt;br /&gt;
gU "en modo visual pone la selección en mayúsculas&lt;br /&gt;
gu "en modo visual pone la selección en minúsculas&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/8910090985870299196/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/8910090985870299196" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/8910090985870299196" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/8910090985870299196" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2011/03/vim-como-python-ide-ii.html" rel="alternate" title="Vim como python ide II" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-5413690243299067017</id><published>2011-02-11T19:36:00.001+01:00</published><updated>2011-02-11T19:46:55.502+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Vim"/><title type="text">Vim como python ide</title><content type="html">Tenía, desde hace tiempo, en tareas pendientes aprender python. Así que he aprovechado que un bash script (sencillo pero con muchas operaciones) me va algo lento para empezar en esta tarea traduciendo este script. &lt;br /&gt;
&lt;br /&gt;
Como estoy muy comodo con Vim y he quedado muy contento adaptándolo para ser un &lt;a href="http://masvale-manya.blogspot.com/2010/07/usar-vim-como-bash-script-ide.html"&gt;bash ide&lt;/a&gt;, me dispuse a buscar algunos pluguins para realizar algo parecido. En esta busqueda me encontre con este ejemplo de &lt;a href="http://juanjoalvarez.net/es/detail/2009/aug/4/vim-ide/"&gt;python ide&lt;/a&gt; que he modificado a mi gusto. Podéis consultar la &lt;a href="http://www.vim.org/scripts/script_search_results.php?keywords=&amp;amp;script_type=&amp;amp;order_by=rating&amp;amp;direction=descending&amp;amp;search=search"&gt;lista de plugins de Vim.&lt;/a&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
El primer pluguin es NERD Tree que se utiliza para navegar entre archivos y directorios de forma visual. Para ver como instalarlo podeis ver mi anterior artículo&lt;a href="http://masvale-manya.blogspot.com/2010/07/nerd-tree-arbol-de-directorios-para-vim.html"&gt; NERD Tree árbol de directorios para Vim&lt;/a&gt;. Os dejo también un par de variables que poner en vuestro .vimrc si os interesan las funciones. Vemos todas las funciones y mapeos escribiendo "?" en la ventana de NERD Tree&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;let NERDTreeShowHidden=1   # Ver archivos ocultos&lt;br /&gt;
let NERDTreeQuitOnOpen=1   # Cerrar después de abrir archivo/s&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Se puede navegar de forma visual entre las funciones, clases, variables ... del código con &lt;a href="http://www.vim.org/scripts/script.php?script_id=273"&gt;Taglist&lt;/a&gt;. Para instalarlo descargamos el plugin, lo copiamos en la carpeta correspondiente y lo descomprimimos.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;wget -O taglist_45.zip http://vim.sourceforge.net/scripts/download_script.php?src_id=7701&lt;br /&gt;
sudo unzip taglist_45.zip&lt;br /&gt;
sudo rm taglist_45.zip&lt;br /&gt;
sudo cp /ruta/taglist_45/doc/* ~/.vim/doc&lt;br /&gt;
sudo cp /ruta/taglist_45/plugin/* ~/.vim/plugin&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Podemos mapear la acción de abrir el plugin poniendo lo siguiente en ~/.vimrc&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;map &amp;lt;tecla_queramos&amp;gt; :TlistToggle&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para que funcione instalamos el siguiente paquete&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo aptitude install exuberant-ctags&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
El siguiente pluguin (&lt;a href="http://vim.sourceforge.net/scripts/script.php?script_id=521"&gt;mru&lt;/a&gt;) nos proporciona la lista de archivos reciente y nos permite abrirlos de manera sencilla.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;cd ~/.vim/pluguin&lt;br /&gt;
wget -O mru.vim http://vim.sourceforge.net/scripts/download_script.php?src_id=11919&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Lo haremos funcionar escribiendo lo siguiente y mapeándolo en .vimrc si se desea&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:MRU&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;map  &amp;lt;tecla_queramos&amp;gt; :MRU &amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.vim.org/scripts/download_script.php?src_id=10388"&gt;Tasklist&lt;/a&gt; nos permite listar y navegar de manera rápida entre los TODO que tengamos en nuestro código. Más concretamente lo que busca es FIXME, TODO y XXX.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;cd ~/.vim/pluguin&lt;br /&gt;
wget -O tasklist.vim http://www.vim.org/scripts/download_script.php?src_id=10388&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para ejecutarlo nos sirve con presionar&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;\t&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si queremos modificar su comportamiento&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;let g:tlWindowPosition = 0 #la ventana se muestra arriba&lt;br /&gt;
let g:tlTokenList = ['ESTA', 'OTRA', 'AQUELLA'] #cambiar palabras de busqueda&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Otra aportación es &lt;a href="http://vim.sourceforge.net/scripts/script.php?script_id=159"&gt;minibuferexplorer&lt;/a&gt; que emula con nuestros bufers (o archivos abiertos) las pestañas. Cuando tengamos más de un bufer nos aparecera una línea arriba como si fueran pestañas con el nombre de los archivos, coloreado de manera diferente el activo, además de señalarlos los que estan sin guardar (para navegar entre ellos). &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;cd ~/.vim/pluguin&lt;br /&gt;
wget -O minibufexpl.vim http://vim.sourceforge.net/scripts/download_script.php?src_id=3640&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Algunas variables interesantes&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;let g:miniBufExplMapWindowNavArrows = 1   # moverse entre ventanas con CTRL+Flechas&lt;br /&gt;
let g:miniBufExplModSelTarget = 1   # poder usar otros exploradores como taglist ...&lt;br /&gt;
let g:miniBufExplMapCTabSwitchBufs = 1   # moverse entre buffers con CTRL+Tab&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Con &lt;a href="http://vim.sourceforge.net/scripts/script.php?script_id=1218"&gt;NERD Commenter&lt;/a&gt; sera muy fácil comentar o descomentar una o varias líneas.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;wget -O nerdcommenter.zip http://vim.sourceforge.net/scripts/download_script.php?src_id=14455&lt;br /&gt;
sudo unzip nerdcommenter.zip&lt;br /&gt;
sudo rm nerdcommenter.zip&lt;br /&gt;
sudo cp /ruta/nerdcommenter/doc/* ~/.vim/doc&lt;br /&gt;
sudo cp /ruta/nerdcommenter/plugin/* ~/.vim/plugin&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Simplemente en modo normal o en visual con una selección pulsamos&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;\cc   # Comentar&lt;br /&gt;
\cu   # Descomentar&lt;br /&gt;
\c+espacio   # Comenta/Descomenta según el estado actual&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Desde Vim 7, (si esta compilado con soporte para python) el siguiente pluguin ya esta instalado aunque, yo lo he instalado para actualizar la versión y así tengo mi carpeta ~/.vim completa para llevarla en un pendrive. &lt;a href="http://www.vim.org/scripts/script.php?script_id=1542"&gt;Pythoncomplete&lt;/a&gt; auto completa nuestro código y nos muestra una explicación de nuestras posibilidades.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;mkdir ~/.vim/autoload&lt;br /&gt;
cd ~/.vim/autoload&lt;br /&gt;
wget -O pythoncomplete.vim http://www.vim.org/scripts/download_script.php?src_id=10872&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Lo mapeamos y cambiamos un par de cosas &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;imap  &amp;lt;tecla_queramos&amp;gt; &amp;lt;C-x&amp;gt;&amp;lt;C-o&amp;gt; # mapeamos el autocompletado&lt;br /&gt;
set completeopt=menuone,preview # muestra menú con opciones de auto completado y su documentación&lt;br /&gt;
# Cierra ventana de documentación cuando escojamos nuestra opción&lt;br /&gt;
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif&lt;br /&gt;
autocmd InsertLeave * if pumvisible() == 0|pclose|endif&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Según pone en la página de python para "estandarizar" la escritura del código y para su mejor lectura se deben seguir unas recomendaciones de la guía &lt;a href="http://www.python.org/dev/peps/pep-0008/"&gt;PEP8&lt;/a&gt;. Para conseguir esto, y no estar pendiente de ello, lo podemos hacer automáticamente cuando editemos un archivo escrito en python: &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vim/ftplugin/python.vim&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;setlocal tabstop=4 # tabula con 4 espacios&lt;br /&gt;
setlocal softtabstop=4 # numero columnas (= espacios) para tabulador &lt;br /&gt;
setlocal shiftwidth=4 # identa con 4 espacios&lt;br /&gt;
setlocal textwidth=80 # número de columnas antes del cambio de línea&lt;br /&gt;
setlocal smarttab # identa en vez del tabulador al principio de la línea&lt;br /&gt;
setlocal expandtab # usa espacios en vez de tabuladores&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para terminar generamos las ayudas, reiniciamos Vim y así podremos ver todas las opciones y mapeos. Dentro de este&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:helptags ~/.vim/doc&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/5413690243299067017/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/5413690243299067017" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/5413690243299067017" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/5413690243299067017" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2011/02/vim-como-python-ide.html" rel="alternate" title="Vim como python ide" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-6023095761805230375</id><published>2011-01-11T17:11:00.001+01:00</published><updated>2011-01-11T17:38:01.973+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><category scheme="http://www.blogger.com/atom/ns#" term="Ssh"/><title type="text">Crear par de claves RSA para SSH</title><content type="html">Continuando con el articulo de como &lt;a href="http://masvale-manya.blogspot.com/2010/12/securizar-ssh.html"&gt;Securizar SSH&lt;/a&gt; vamos a ver una opción para mi imprescindible.&lt;br /&gt;
Crear un par de claves para cada usuario para acceder al servidor significa que, para entrar necesitaremos saber el nombre de usuario, tener el archivo de la clave encriptada y la contraseña de la misma. Por lo que añade una capa de seguridad importante.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Para este fin desde la máquina cliente nos cercioramos que tenemos creado el directorio /home/ususario/.ssh y sino lo hacemos&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;cd ~&lt;br /&gt;
mkdir .ssh&lt;br /&gt;
chmod 700 .ssh&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ahora creamos las claves y le indicamos la contraseña (yo siempre uso una diferente a la del usuario)&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ssh-keygen -t rsa -b 4096&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Podemos crear también una clave dsa, simplemente cambiando rsa por dsa, si lo preferimos (la diferencia principal entre ambas es que dsa tarda menos en generar la clave pero más en logarte). Los 4096 indican la longitud en bits de la clave. Ahora tenemos el archivo de identificación en /home/usuario/.ssh/id_rsa y la clave en /home/usuario/.ssh/id_rsa.pub (sino le hemos cambiado el nombre mientras la creabamos).&lt;br /&gt;
&lt;br /&gt;
Cuando tengamos creada ya la clave podemos cambiar el password, cosa que deberíamos hacer con cierta asiduedad, con&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ssh-keygen -p&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para habilitar la clave en el servidor debemos copiar el contenido de la clave en /home/ususario/.ssh/authorized_keys. Lo podemos hacer copiando y pegando con nuestro editor o, creamos antes el directorio sino existe&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ssh -p xxxx equipo&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir .ssh&lt;br /&gt;
chmod 700 .ssh&lt;br /&gt;
exit&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
copiamos la clave al servidor&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;scp -P xxxx ~/.ssh/id_rsa.pub equipo:/home/usuario/.ssh/id_rsa.pub&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
creamos el archivo y le damos los permisos necesarios&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ssh -p xxxx equipo&lt;br /&gt;
cd ~/.ssh&lt;br /&gt;
cat id_rsa.pub &amp;gt; authorized_keys&lt;br /&gt;
chmod 600 *&lt;br /&gt;
sudo /etc/init.d/ssh restart&lt;br /&gt;
exit&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Se pueden poner restricciones de acceso en la clave. Para esto colocamos en la misma linea que la clave y al principio cualquiera de estas opciones separadas por comas&lt;br /&gt;
- from="equipo,equipo2": Nos permite el login desde el equipo o equipos indicados.&lt;br /&gt;
- no-port-forwarding, no-X11-forwarding, no-agent-forwarding: No podremos ni la redirección de puertos ni del protocolo X11.&lt;br /&gt;
- nopty: No permite al ususario el uso de un shell.&lt;br /&gt;
- command="comando": Cuando nos logamos ejecuta el comando que le indiquemos.&lt;br /&gt;
- permitopen="equipo:puerto,equipo2:puerto": Permite la redirección de puertos, pero delimitando exactamente cual.&lt;br /&gt;
- environment="variable=valor,variable2=valor": Define variables de entorno para la identidad remota.&lt;br /&gt;
- Para ver la lista completa:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;man sshd&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Una vez hecho esto solo queda probar que podemos entrar utilizando las clave&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ssh -p xxxx -i ~/.ssh/clave_rsa equipo&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Y si todo ha ido bien desactivaremos las contraseñas para que solo se pueda acceder a través de clave&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim /etc/ssh/sshd_config&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;PasswordAuthentication no&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Reiniciamos el servicio y ya tenemos nuestro servidor un poco más seguro.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo /etc/init.d/ssh restart&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/6023095761805230375/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/6023095761805230375" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/6023095761805230375" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/6023095761805230375" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2011/01/crear-par-de-claves-rsa-para-ssh.html" rel="alternate" title="Crear par de claves RSA para SSH" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-7434373443415715334</id><published>2010-12-31T18:23:00.008+01:00</published><updated>2011-03-23T21:41:32.354+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><category scheme="http://www.blogger.com/atom/ns#" term="Ssh"/><title type="text">Securizar SSH</title><content type="html">La seguridad es un tema controvertido ya que por mucho que "securices" un servicio (como ssh en este caso) siempre puedes estar expuesto a un bug de otro servicio y/o aplicación, pero hay que intentar no ponerlo fácil. &lt;br /&gt;
&lt;br /&gt;
Hace poco me pidieron consejo ya que vieron en los logs de ssh un nada despreciable número de ataques al día. Cuando ves esto te da un poco de (como mínimo) respeto ya que piensas que alguno puede lograr algo. Se que de ssh se ha escrito mucho y quizás no aporte nada nuevo, pero para ayudar a alguien o para reunir información os retoco el mail que le envié.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Todos los cambios en ssh se realizan en el siguiente fichero &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim /etc/ssh/sshd_config&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
y después de estos para que surjan efecto se reinicia el servicio.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo /etc/init.d/ssh restart&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Una cosa muy sencilla y que reduce sensiblemente los ataques es cambiar el puerto de escucha del servicio por otro de nuestra elección. Así salimos de los escaneos rápidos y no se identifica el servidor a simple vista.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;Port xxxx&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si queremos que solo se acceda desde una interfaz de red, segmento de esta, ...&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ListenAddress xxx.xxx.xxx.xxx&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Aunque si instalamos actualmente cualquier servidor ssh éste ya viene compilado con el protocolo 2, (ya que el 1 esta en desuso y tiene varias vulnerabilidades importantes), no está de mas comprobarlo&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;Protocol 2&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para llevar más control de lo que pasa en el servidor, ataques, logueos, ... podemos aumentar el nivel de log del servidor. Las opciones superiores a la INFO (casi siempre por defecto) son DEBUG (este nivel es muy completo pero vulnera la intimidad de los usuarios), DEBUG2, DEBUG3 y VERBOSE (es cuestión de probar y ver cual nos es mas útil)&lt;sup&gt;1&lt;/sup&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;LogLevel DEBUGx&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Reducir el tiempo del que disponemos para logarnos en el servidor, el que estiméis suficiente para dicho fin en segundos&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;LoginGraceTime xx&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Otra buena opción es evitar que el usuario root pueda logarse. Yo personalmente siempre evito los nombres de usuario tipo nombre propio o algo sencillo de adivinar ya que casi todo el mundo toma medidas con su contraseña pero olvidamos que el usuario es la mitad de la llave y root siempre existe.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;PermitRootLogin no&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Nos aseguramos que los archivos del directorio home de los usuarios como claves, ... no tengan permisos de escritura para cualquiera antes de aceptar el login&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;StrictModes yes&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Evitamos la aceptación de ficheros rhost, shost y que los ususarios puedan entrar sin contraseña&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;IgnoreRhosts yes&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Esta es bastante obvia, no permitir los passwords vacios&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;PermitEmptyPasswords no&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si no tienes previsto permitir la ejecución de aplicaciones del servidor de las X a través de ssh puedes restringirlo&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;X11Forwarding no&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Reduciremos también el número de intentos para logarnos. Y asi conseguimos quitarnos de encima algunos scripts que intentan entrar por fuerza bruta&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;MaxAuthTries 2&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Aunque lo podemos hacer creando un grupo de usuarios y permitir a este grupo el uso de ssh, tenemos también la opción de restringir su uso por aquí, simplemente al usuario o al usuario desde una ip en concreto. Con esta opción solo podrán usar el servidor los usuarios indicados&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;AllowUsers fulano mengano@xxx.xxx.xxx.xxx&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
También tenemos denegar usuario, permitir grupo y denegar grupo para apoyar las restricciones por si quisieras indicarlas de esta manera&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;DenyUsers fulano&lt;br /&gt;
DenyGroups fulanos&lt;br /&gt;
AllowGroups menganos&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Como este articulo se esta haciendo muy largo lo divido y dejo para próximos los siguientes puntos:&lt;br /&gt;
- &lt;a href="http://masvale-manya.blogspot.com/2011/01/crear-par-de-claves-rsa-para-ssh.html"&gt;Crear par de claves rsa&lt;/a&gt;&lt;br /&gt;
- SPA: Single Packet Authentication&lt;br /&gt;
-&lt;sup&gt;1&lt;/sup&gt;&lt;a href="http://masvale-manya.blogspot.com/2011/03/separar-el-log-de-ssh.html"&gt;Separar el log de Ssh&lt;/a&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/7434373443415715334/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/7434373443415715334" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/7434373443415715334" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/7434373443415715334" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/12/securizar-ssh.html" rel="alternate" title="Securizar SSH" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-925285319804230701</id><published>2010-11-24T23:50:00.003+01:00</published><updated>2010-11-25T23:13:58.675+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Scripts"/><title type="text">Eliminar el último panel de Gnome</title><content type="html">El otro día un amigo me pidió ayuda para eliminar el último panel de Gnome, ya que se había instalado la versión trunk de awn y me comentó que el dock ya llevaba para el todo lo necesario y así podía prescindir del panel.El había leído que eliminarlo no era una opción, por que tenía inconvenientes como no poder ejecutar el lanzador de aplicaciones Alt+F2.&lt;br /&gt;
&lt;br /&gt;
En ese momento yo le pregunté: por que no le das a la opción de ocultar automáticamente?, pero también me comentó si era posible que no apareciese cuando pasaras el ratón.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
No soy un experto en Gnome pero encontré algo que puede hacer el servicio: y es ocultarlo automáticamente, pero aumentar el tiempo de aparición para que al pasar el ratón no aparezca. Como a mi amigo, palabras suyas, le da miedo gconf porque es un manazas y además la consola le da un poco de urticaria, decidí realizar un script para que "eliminara" o mostrara el panel con un menú gráfico y asi poder crear un lanzador o ejecutarlo desde la consola. Por si alguien se encuentra en la misma situación, aquí os lo dejo:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim panel.sh&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;#!/bin/bash -&lt;br /&gt;
#===============================================================================&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARCHIVO:&amp;nbsp; panel.sh&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USO:&amp;nbsp; ./panel.sh &lt;br /&gt;
# &lt;br /&gt;
#&amp;nbsp;&amp;nbsp; DESCRIPCION:&amp;nbsp; esconde/oculta/muestra el último panel Gnome&lt;br /&gt;
# &lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OPCIONES:&amp;nbsp; ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp; REQUISITOS:&amp;nbsp; ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTAS:&amp;nbsp; ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AUTOR: Nebur (Más Vale Manya ...), masvalemanya@gmail.com&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WEB: http://masvale-manya.blogspot.com&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CREADO: 19/11/10 19:50:56 CET&lt;br /&gt;
#===============================================================================&lt;br /&gt;
&lt;br /&gt;
set -o nounset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Treat unset variables as an error&lt;br /&gt;
&lt;br /&gt;
titulo="Modificando Gnome Panel"&lt;br /&gt;
texto="Que opción prefieres escoger?"&lt;br /&gt;
opc1="Esconder panel"&lt;br /&gt;
opc2="Mostrar panel (fijo)"&lt;br /&gt;
opc3="Mostrar panel (Ocultar auto)"&lt;br /&gt;
opc4="Salir"&lt;br /&gt;
menu=0&lt;br /&gt;
until [ "$(echo "$menu" | grep -w "$opc4")" != "" ]; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; menu=$(zenity --title "$titulo" --text "$texto" --height 207 --width 263 --list --radiolist&amp;nbsp; --column "" --column "" TRUE "$opc1" FALSE "$opc2" FALSE "$opc3" FALSE "$opc4")&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$(echo "$menu" | grep -w "$opc1")" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gconftool --type bool --set /apps/panel/toplevels/top_panel_screen0/auto_hide true&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gconftool --type int --set /apps/panel/toplevels/top_panel_screen0/unhide_delay 100000&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$(echo "$menu" | grep -w "$opc2")" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gconftool --type bool --set /apps/panel/toplevels/top_panel_screen0/auto_hide false&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gconftool --type int --set /apps/panel/toplevels/top_panel_screen0/unhide_delay 100&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$(echo "$menu" | grep -w "$opc3")" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gconftool --type bool --set /apps/panel/toplevels/top_panel_screen0/auto_hide true&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; gconftool --type int --set /apps/panel/toplevels/top_panel_screen0/unhide_delay 100&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
done&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/925285319804230701/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/925285319804230701" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/925285319804230701" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/925285319804230701" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/11/eliminar-el-ultimo-panel-de-gnome.html" rel="alternate" title="Eliminar el último panel de Gnome" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-5646902468322890943</id><published>2010-11-23T23:30:00.005+01:00</published><updated>2010-11-24T18:49:43.586+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><category scheme="http://www.blogger.com/atom/ns#" term="Virtualización"/><category scheme="http://www.blogger.com/atom/ns#" term="Vmware"/><title type="text">Vmware player / workstation en Ubuntu Maverick x64</title><content type="html">Utilizo normalmente varias maquinas virtuales para ciertas cosas específicas y concretamente vmware por temas laborales. Así que después de instalarme el nuevo Ubuntu Maverick, me dispuse a instalarlo de la manera habitual y sorprendentemente, a la hora de compilar los módulos del kernel me arrojo un error tal que este:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;...&lt;br /&gt;
/tmp/vmware-root/modules/vmmon-only/linux/iommu.c:156: error: implicit declaration of function ‘iommu_map_range’&lt;br /&gt;
...&lt;/code&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Esto sucede porque en las fuentes del modulo vmmon, en el archivo iommu.c se llama a iommu_map_range y iommu_unmap_range que con kernels 2.6.35.x deberían de ser iommu_map y iommu_unmap.&lt;br /&gt;
&lt;br /&gt;
Por si alguien ahora mismo se le esta haciendo un mundo llegar a solucionarlo el mismo, en el &lt;a href="http://communities.vmware.com/message/1627018"&gt;foro de vmware&lt;/a&gt; han realizado un script que realiza los cambios y ejecuta la compilación de los módulos.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;cd /tmp&lt;br /&gt;
wget http://communities.vmware.com/servlet/JiveServlet/download/1553530-39784/patch-modules.sh&lt;br /&gt;
sudo chmod +x patch-modules.sh&lt;br /&gt;
sudo sh patch-modules.sh&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/5646902468322890943/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/5646902468322890943" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/5646902468322890943" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/5646902468322890943" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/11/vmware-player-workstation-en-ubuntu.html" rel="alternate" title="Vmware player / workstation en Ubuntu Maverick x64" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-3036049930965652713</id><published>2010-09-02T22:50:00.001+02:00</published><updated>2011-05-09T17:54:15.193+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Auditoría"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type="text">Detectar rootkits en Linux / Unix</title><content type="html">Una tarea que se debería realizar periódicamente es verificar si nuestro sistema tiene algún &lt;a href="http://es.wikipedia.org/wiki/Rootkit"&gt;rootkit&lt;/a&gt; para nuestra tranquilidad. Por mucha atención que prestemos a la seguridad no hay ningún sistema cien por cien seguro. Lo interesante sería crear una tarea programada con cron y mandar los resultados a un log para revisarlo más tarde.&lt;br /&gt;
&lt;br /&gt;
Existen varias herramientas para comprobar si tenemos algún rootkit en nuestro sistema. Voy a comentar tres de ellas:&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.security-projects.com/?Unhide"&gt;Unhide&lt;/a&gt;&lt;br /&gt;
No es un detector de rootkits en si, sino que busca procesos y puertos ocultos que suele detonar la presencia de uno de estos.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo aptitude install unhide&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para realizar los distintos escaneos podemos usar&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo unhide-linux26 proc&lt;br /&gt;
sudo unhide-linux26 sys&lt;br /&gt;
sudo unhide-linux26 brute&lt;br /&gt;
sudo unhide-tcp&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.rootkit.nl/projects/rootkit_hunter.html"&gt;Rootkit Hunter&lt;/a&gt;&lt;br /&gt;
Escanea el sistema en busca de rootkits, backdoors y exploits locales&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo aptitude install rkhunter&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para actualizar las definiciones&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo rkhunter --update&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
si queremos realizar un chequeo completo&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo rkhunter -c&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
y para evitarnos preguntas&lt;br /&gt;
&lt;code&gt;sudo rkhunter -c --sk&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.chkrootkit.org/"&gt;Chkrootkit&lt;/a&gt;&lt;br /&gt;
Programa que escanea el sistema en busca de rootkit&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo aptitude install chkrootkit&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para ejecutarlo simplemente&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo chkrootkit&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/3036049930965652713/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/3036049930965652713" rel="replies" title="1 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/3036049930965652713" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/3036049930965652713" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/09/detectar-rootkits-en-linux-unix.html" rel="alternate" title="Detectar rootkits en Linux / Unix" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-8414379037828913241</id><published>2010-08-27T16:30:00.000+02:00</published><updated>2010-08-27T16:30:29.943+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Auditoría"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type="text">Lynis Auditoría de seguridad para Linux / Unix</title><content type="html">Es una herramienta para realizar auditorías de seguridad en sistemas basados en Unix. Escanea el sistema en busca de posibles fallos de seguridad en los métodos de autenticación, parches de software, permisos de archivos y usuarios, configuración del firewall ... &lt;br /&gt;
&lt;br /&gt;
La aplicación no corrige errores solo nos informa de ellos por pantalla y/o a través de un log. Podemos descargar &lt;a href="http://www.rootkit.nl/projects/lynis.html"&gt;lynis&lt;/a&gt; para ejecutarlo desde un medio extraíble o instalarlo desde los repositorios en la misma máquina.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;code&gt;sudo aptitude install lynis&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Algunas de las opciones son: realizar escaneo&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo lynis -c&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Sino queremos que nos cree un log&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo lynis -c --no-log&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Podemos crear un cron job ejecutándolo de manera automática y podemos indicarle quien es el auditor para diferenciar los logs&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo lynis -c --auditor "automatico" --cronjob&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/8414379037828913241/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/8414379037828913241" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/8414379037828913241" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/8414379037828913241" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/08/lynis-auditoria-de-seguridad-para-linux.html" rel="alternate" title="Lynis Auditoría de seguridad para Linux / Unix" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-6188973513407377565</id><published>2010-08-25T23:10:00.002+02:00</published><updated>2010-12-23T03:05:46.948+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Scripts"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><title type="text">Instalar Oracle 11g R2 en CentOS 5.5</title><content type="html">Hacia tiempo que no trabajaba con Red Hat, así que para este propósito  decidí usar centOS ya que es un clon casi exacto de este, con la ventaja  que tiene las actualizaciones gratuitas.&lt;br /&gt;
&lt;br /&gt;
Estuve a punto de probar el entorno gráfico ligero que tiene la versión  de servidor, pero estoy acostumbrado a trabajar sin él y como en esta  máquina iba a entrar casi siempre por ssh, lo vi un gasto de memoria  inútil. Por lo que durante la instalación a la hora de escoger los  paquetes desmarqué gnome, y algunas funciones que no iba a utilizar,  seguí los pasos correspondientes y deshabilité SELinux.  &lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Los siguientes pasos no son necesarios pero los realicé por comodidad y  seguridad. Instalé bash-completion para el autocompletado con el  tabulador desde la consola&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;wget http://www.caliban.org/files/redhat/RPMS/noarch/bash-completion-20060301-1.noarch.rpm&lt;br /&gt;
rpm -ivh bash-completion-20060301-1.noarch.rpm&lt;br /&gt;
./etc/bash_completion&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Configuré sudo para tareas administrativas y bloqueé el usuario root.  Instalé y añadí el usuario con permisos para usarlo al grupo wheel&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;yum install sudo&lt;br /&gt;
usermod -G wheel usuario&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Edité y descomenté la línea para dar permisos al grupo whell&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;visudo&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;%wheel  ALL=(ALL)       ALL&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ahora salgo del usuario root y deshabilito el login para esta cuenta.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo usermod --lock root&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Cada vez que necesite una consola con root simplemente con este usuario escribimos&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo su&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Además añadí un PATH para abrir algunas aplicaciones más cómodamente.  Busco el texto y lo dejo como se observa debajo, donde 500 es el EUID  del usuario al que se aplica el PATH. Si queremos que se aplique a todos  simplemente eliminamos el if&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim /etc/profile&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;if [ "$EUID" = "500" ]; then&lt;br /&gt;
&amp;nbsp; pathmunge /sbin&lt;br /&gt;
&amp;nbsp; pathmunge /usr/sbin&lt;br /&gt;
&amp;nbsp; pathmunge /usr/local/sbin&lt;br /&gt;
fi&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Al bloquear el login de root no disponía así del PATH, para disponer de  él introduciendo sudo su (sudo -i o -l no funciona), hay que escribir lo  siguiente después de la función pathmunge &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim /etc/bashrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;pathmunge () {&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if [ "$EUID" = "0" ]; then&lt;br /&gt;
&amp;nbsp; pathmunge /sbin&lt;br /&gt;
&amp;nbsp; pathmunge /usr/sbin&lt;br /&gt;
&amp;nbsp; pathmunge /usr/local/sbin&lt;br /&gt;
fi&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para instalar Oracle necesitas instalar unos cuantos paquetes y  modificar unas configuraciones del sistema. Para ello creé un script  para esta y las posibles próximas veces, que verifica si están hechos  los cambios y si no los realiza y si queremos descomprime Oracle en la  carpeta adecuada. &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim oracle.sh&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;#!/bin/bash -&lt;br /&gt;
#==========================================================================&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARCHIVO: oracle.sh&amp;nbsp; &lt;br /&gt;
#&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USO: ./oracle.sh (/ruta/linux_11gR2_database_1of2.zip)/(No/no)&lt;br /&gt;
# &lt;br /&gt;
#&amp;nbsp;&amp;nbsp; DESCRIPCION: Realiza las configuraciones necesarias para &lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instalar Oracle &lt;br /&gt;
# &lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OPCIONES: $1 (/ruta/linux_11gR2_database_1of2.zip)/(No/no)&lt;br /&gt;
#&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NOTAS: Para saltar la copia/descompresión de Oracle $1=No/no&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp; REQUISITOS: Tener permisos de root - $1&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AUTOR: Nebur (Más Vale Manya ...), masvalemanya@gmail.com&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WEB: http://masvale-manya.blogspot.com&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CREADO: 18/08/10 13:08:28 CEST&lt;br /&gt;
#==========================================================================&lt;br /&gt;
&lt;br /&gt;
set -o nounset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Treat unset variables as an error&lt;br /&gt;
&lt;br /&gt;
#===&amp;nbsp; FUNCION&amp;nbsp; ============================================================&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOMBRE:&amp;nbsp; usuarios&lt;br /&gt;
#&amp;nbsp;&amp;nbsp; DESCRIPCION:&amp;nbsp; Crea usuarios y grupos para Oracle&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp; PARAMETROS:&amp;nbsp; $1 La contraseña del usuario oracle&lt;br /&gt;
#==========================================================================&lt;br /&gt;
usuarios ()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;grup_u=( "dba" "oinstall" "oracle" )&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;grup_users=`echo ${#grup_u[*]}`&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;for (( i=0;i&amp;lt;$grup_users;i++ )); do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $i != 2 ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$(grep -w "^${grup_u[$i]}" /etc/group)" = "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;groupadd ${grup_u[$i]}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$(grep -w "^${grup_u[$i]}" /etc/passwd)" = "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;useradd -g ${grup_u[1]} -G ${grup_u[0]} ${grup_u[$i]}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;usermod -g ${grup_u[1]} -G ${grup_u[0]} ${grup_u[$i]}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo -e "$1\n$1" | (passwd --stdin ${grup_u[$(( i - 1 ))]})&lt;br /&gt;
}&amp;nbsp;&amp;nbsp; &amp;nbsp;# ----------&amp;nbsp; end of function usuarios&amp;nbsp; ----------&lt;br /&gt;
&lt;br /&gt;
#===&amp;nbsp; FUNCION&amp;nbsp; ============================================================&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOMBRE:&amp;nbsp; backup&lt;br /&gt;
#&amp;nbsp;&amp;nbsp; DESCRIPCION:&amp;nbsp; Realiza copia de archivo.vell(n)&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp; PARAMETROS:&amp;nbsp; $1 Ruta y nombre archivo&lt;br /&gt;
#==========================================================================&lt;br /&gt;
backup ()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;ext="vell"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;num=""&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;while [ -e $1.$ext$num ]; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;num=$(( num+1 ))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $num != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (( i=0;i&amp;lt;$num;i++ )); do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;p_ext=$(( $num-$(( i+1 )) ))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $p_ext -eq 0 ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mv $1.$ext $1.$ext$(( $num-$i ))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mv $1.$ext$p_ext $1.$ext$(( $num-$i ))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;cp $1 $1.$ext&lt;br /&gt;
}&amp;nbsp;&amp;nbsp; &amp;nbsp;# ----------&amp;nbsp; end of function backup&amp;nbsp; ----------&lt;br /&gt;
&lt;br /&gt;
#===&amp;nbsp; FUNCION&amp;nbsp; ============================================================&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOMBRE:&amp;nbsp; modificar&lt;br /&gt;
#&amp;nbsp;&amp;nbsp; DESCRIPCION:&amp;nbsp; Añade/modifica en archivo parámetros sueltos&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp; PARAMETROS:&amp;nbsp; $1 parámetros a modificar - $2 valores de parámetros - &lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $3 archivo a modificar&lt;br /&gt;
#==========================================================================&lt;br /&gt;
modificar ()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;OLD_IFS=$IFS&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;IFS=''&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local a_parame="$1[*]"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local loc_parame=(${!a_parame})&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local a_valor="$2[*]"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local loc_valor=(${!a_valor})&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;IFS=$OLD_IFS&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;total=`echo ${#loc_parame[*]}`&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;let primer=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;let primero=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;for (( i=0;i&amp;lt;$total;i++ )); do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pre_sust="${loc_parame[$i]}${loc_valor[$i]}"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sust="$(echo "$pre_sust" | sed "s/\.\*/ /g")"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bus_c=$(grep -w "^$pre_sust" $3)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bus_p=$(grep -w "^${loc_parame[$i]}" $3)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$bus_c" = "" ]; then&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$bus_p" = "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $primero -eq 0 ] ; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;backup $3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((primero++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $primer -eq 0 ] ; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo " " &amp;gt;&amp;gt; $3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((primer++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo $sust &amp;gt;&amp;gt; $3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $primero -eq 0 ] ; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;backup $3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((primero++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bus_p=$(echo "$bus_p" | sed 's/\//\\\//g')&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sust=$(echo "$sust" | sed 's/\//\\\//g')&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sed -i "s/$bus_p/$sust/" $3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
}&amp;nbsp;&amp;nbsp; &amp;nbsp;# ----------&amp;nbsp; end of function modificar&amp;nbsp; ----------&lt;br /&gt;
&lt;br /&gt;
#===&amp;nbsp; FUNCION&amp;nbsp; ============================================================&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOMBRE:&amp;nbsp; modificar_b&lt;br /&gt;
#&amp;nbsp;&amp;nbsp; DESCRIPCION:&amp;nbsp; Verifica/añade en archivo bucle especificado&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp; PARAMETROS:&amp;nbsp; $1 parámetros a modificar - $2 linea inicial - &lt;br /&gt;
#&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $3 principio del bucle - $4 fin del bucle -&lt;br /&gt;
#&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $5 archivo a modificar&lt;br /&gt;
#==========================================================================&lt;br /&gt;
modificar_b ()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;OLD_IFS=$IFS&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;IFS=''&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local a_parame="$1[*]"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local loc_parame=(${!a_parame})&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;IFS=$OLD_IFS&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;total=`echo ${#loc_parame[*]}`&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;line_i=$(grep -n -w "$2" $5 | cut -d':' -f1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $line_i != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;line_pa=$(grep -n -w "$3" $5 | cut -d':' -f1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;i=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for line in $line_pa; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;line_p[$i]=$line&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((i++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;line_fa=$(grep -n -w "$4" $5 | cut -d':' -f1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;i=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for line in $line_fa; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;line_f[$i]=$line&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((i++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;i=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;a=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;z=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;tot_f=`echo ${#line_f[*]}`&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;until [ $a -eq $z ] &amp;amp;&amp;amp; [ $a -ne 0 ]; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ ${line_p[$i]} -eq $line_i ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((a++)) &amp;amp;&amp;amp; ((i++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ ${line_p[$i]} -gt $line_i ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ ${line_p[$i]} -gt ${line_f[$x]} ] &amp;amp;&amp;amp; [ ${line_f[$x]} -lt $line_i ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((x++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ ${line_p[$i]} -gt ${line_f[$x]} ] &amp;amp;&amp;amp; [ ${line_f[$x]} -gt $line_i ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((z++)) &amp;amp;&amp;amp; ((x++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ ${line_p[$i]} -lt ${line_f[$x]} ] &amp;amp;&amp;amp; [ $i -ne $(( tot_f-1 )) ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((a++)) &amp;amp;&amp;amp; ((i++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ ${line_p[$i]} -lt ${line_f[$x]} ] &amp;amp;&amp;amp; [ $i -eq $(( tot_f-1 )) ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((z++)) &amp;amp;&amp;amp; ((x++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((i++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;verif=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (( i=0;i&amp;lt;$total;i++ )); do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;modif=$(echo ${loc_parame[$i]})&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;real=$(echo $(sed $(( line_i+i ))!d $5))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$modif" = "$real" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((verif++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;primer=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $verif -ne $total ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;backup $5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;sed -i $line_i,${line_f[$x]}d $5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (( i=0;i&amp;lt;$total;i++ )); do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $primer -eq 0 ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo " " &amp;gt;&amp;gt; $5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((primer++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo "${loc_parame[$i]}" &amp;gt;&amp;gt; $5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;backup $5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;primer=0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (( i=0;i&amp;lt;$total;i++ )); do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $primer -eq 0 ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo " " &amp;gt;&amp;gt; $5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;((primer++))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo "${loc_parame[$i]}" &amp;gt;&amp;gt; $5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
}&amp;nbsp;&amp;nbsp; &amp;nbsp;# ----------&amp;nbsp; end of function modificar_b&amp;nbsp; ----------&lt;br /&gt;
&lt;br /&gt;
#===&amp;nbsp; FUNCION&amp;nbsp; ============================================================&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOMBRE:&amp;nbsp; direc&lt;br /&gt;
#&amp;nbsp;&amp;nbsp; DESCRIPCION:&amp;nbsp; Crea directorios y permisos&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp; PARAMETROS:&amp;nbsp; S1 directorios - $2 usuario propietario - &lt;br /&gt;
#&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $3 permisos &lt;br /&gt;
#==========================================================================&lt;br /&gt;
direc ()&lt;br /&gt;
{&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;OLD_IFS=$IFS&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;IFS=''&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local a_dir="$1[*]"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local loc_dir=(${!a_dir})&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local a_user="$2[*]"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local loc_user=(${!a_user})&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local a_per="$3[*]"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local loc_per=(${!a_per})&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;IFS=$OLD_IFS&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;total=`echo ${#loc_dir[*]}`&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;for (( i=0;i&amp;lt;$total;i++ )); do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ ! -d ${loc_dir[$i]} ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mkdir -p ${loc_dir[$i]}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;chown -R ${loc_user[$i]} ${loc_dir[$i]}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;chmod -R ${loc_per[$i]} ${loc_dir[$i]}&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
}&amp;nbsp;&amp;nbsp; &amp;nbsp;# ----------&amp;nbsp; end of function direc&amp;nbsp; ----------&lt;br /&gt;
&lt;br /&gt;
#===&amp;nbsp; FUNCION&amp;nbsp; ============================================================&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOMBRE:&amp;nbsp; cop_desc&lt;br /&gt;
#&amp;nbsp;&amp;nbsp; DESCRIPCION:&amp;nbsp; Copia y descomprime archivos en ruta especificada&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp; PARAMETROS:&amp;nbsp; $1 archivos a copiar - $2 ruta donde copiar&lt;br /&gt;
#==========================================================================&lt;br /&gt;
cop_desc ()&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;OLD_IFS=$IFS&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;IFS=''&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local a_rarch="$1[*]"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;local loc_rarch=(${!a_rarch})&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;IFS=$OLD_IFS&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;total=`echo ${#loc_rarch[*]}`&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;no_u="Error copiando los archivos de instalación"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;for (( i=0;i&amp;lt;$total;i++ )); do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cp ${loc_rarch[$i]} $2&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;done &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; echo "..." || echo "$no_u"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;no_u="Error descomprimiendo los archivos de instalación"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;cd $2&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;for (( i=0;i&amp;lt;$total;i++ )); do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;arch=$(echo "${loc_rarch[$i]}" | sed 's/\(.*\)\///g')&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;unzip $arch&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;rm $arch&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;done &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; echo "..." || echo "$no_u"&lt;br /&gt;
}&amp;nbsp;&amp;nbsp; &amp;nbsp;# ----------&amp;nbsp; end of function cop_desc&amp;nbsp; ----------&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
#&amp;nbsp; Verifica que somos root y sino salimos&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
if [ $UID -ne 0 ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo "Necesitas ser root (sudo su) para que el script funcione"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;exit &lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
#&amp;nbsp; Verifica que se ha introducido $1 y es correcto&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
if [ $# -le 0 ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo "Necesitas introducir la ruta de linux_11gR2_database_1of2.zip.  ./oracle.sh /ruta/linux_11gR2_database_1of2.zip o No/no si no deseas  que se descomprima Oracle en a carpeta adecuada"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;exit&lt;br /&gt;
fi&lt;br /&gt;
if [ $# -gt 1 ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;echo "No puedes usar más de un parametro. ./oracle.sh  /ruta/linux_11gR2_database_1of2.zip o No/no si no deseas que se  descomprima Oracle en a carpeta adecuada"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;exit&lt;br /&gt;
fi&lt;br /&gt;
if [ $1 != "No" ] &amp;amp;&amp;amp; [ $1 != "no" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ ! -e $1 ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo "No existe linux_11gR2_database_1of2.zip en la ruta  especificada o no ha especificado No para saltarse la copia de Oracle en  la carpeta oportuna"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;p2=$(echo $1 | sed "s/1of2/2of2/g")&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ ! -e $p2 ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo "No existe linux_11gR2_database_2of2.zip en la ruta especificada"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
#&amp;nbsp; Crea usuarios y grupos para Oracle&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
echo "Introduzca la contraseña para el usuario oracle:"&lt;br /&gt;
read pass&lt;br /&gt;
&lt;br /&gt;
echo "Creando usuarios y grupos ..."&lt;br /&gt;
si_u="Cambios realizados con éxito"&lt;br /&gt;
no_u="Error creando usuarios y grupos"&lt;br /&gt;
usuarios $pass &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; echo "$si_u" || echo "$no_u"&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
#&amp;nbsp; Modifica los parámetros del kernel&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
parame=( "kernel.shmmni =" "kernel.sem =" "fs.file-max ="  "net.ipv4.ip_local_port_range =" "net.core.rmem_default ="  "net.core.wmem_default =" "net.core.rmem_max =" "net.core.wmem_max ="  "fs.aio-max-nr =" )&lt;br /&gt;
valor=( " 4096" " 250 32000 100 128" " 6815744" " 9000 65500" " 262144" " 262144" " 4194304" " 1048576" " 1048576" )&lt;br /&gt;
archivo="/etc/sysctl.conf"&lt;br /&gt;
no_u="Error modificando los parámetros del Kernel. Puede restaurar $archivo.vell"&lt;br /&gt;
&lt;br /&gt;
echo "Modificando los parámetros del Kernel ..."&lt;br /&gt;
modificar parame valor $archivo &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; echo "$si_u" || echo "$no_u"&lt;br /&gt;
no_u="Error cargando los parámetros del Kernel."&lt;br /&gt;
sysctl -p &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; echo "..." || echo "$no_u"&lt;br /&gt;
&lt;br /&gt;
unset parame&lt;br /&gt;
unset valor&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
#&amp;nbsp; Modifica los limites de shell&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
parame=( "oracle.*soft.*nproc" "oracle.*hard.*nproc" "oracle.*soft.*nofile" "oracle.*hard.*nofile" )&lt;br /&gt;
valor=( " 2047" " 16384" " 1024" " 65536" )&lt;br /&gt;
archivo="/etc/security/limits.conf"&lt;br /&gt;
no_u="Error modificando los limites del shell. Puede restaurar $archivo.vell"&lt;br /&gt;
echo "Modificando los limites del shell ..."&lt;br /&gt;
modificar parame valor $archivo &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; echo "..." || echo "$no_u"&lt;br /&gt;
unset parame&lt;br /&gt;
unset valor&lt;br /&gt;
&lt;br /&gt;
parame="session required /lib/security/pam_limits.so"&lt;br /&gt;
valor=" "&lt;br /&gt;
archivo="/etc/pam.d/login"&lt;br /&gt;
no_u="Error modificando los limites del shell. Puede restaurar $archivo.vell"&lt;br /&gt;
modificar parame valor $archivo &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; echo "..." || echo "$no_u"&lt;br /&gt;
unset parame&lt;br /&gt;
unset valor&lt;br /&gt;
&lt;br /&gt;
while read LINE; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;parame[$i]=$LINE&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;((i++))&lt;br /&gt;
done&amp;lt;&lt;bucle&gt;&lt;br /&gt;
if [ \$USER = "oracle" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ \$SHELL = "/bin/ksh" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ulimit -p 16384&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ulimit -n 65536&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;else &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ulimit -u 16384 -n 65536&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;umask 022&lt;br /&gt;
fi&lt;br /&gt;
BUCLE&lt;br /&gt;
ini="if \[ .*USER = \"oracle\" \]; then"&lt;br /&gt;
bucle_i="if.*then"&lt;br /&gt;
bucle_f="fi"&lt;br /&gt;
archivo="/etc/profile"&lt;br /&gt;
no_u="Error modificando los limites del shell. Puede restaurar $archivo.vell"&lt;br /&gt;
modificar_b parame "$ini" "$bucle_i" "$bucle_f" $archivo &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; echo "$si_u" || echo "$no_u"&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
#&amp;nbsp; Crea los directorios con los permisos necesarios&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
dir=( "/opt/oracle/product" "/opt/oraInventory" )&lt;br /&gt;
usu=( "oracle:oinstall" "oracle:oinstall" )&lt;br /&gt;
per=( "775" "775" )&lt;br /&gt;
&lt;br /&gt;
echo "Creando directorios y permisos necesarios ..."&lt;br /&gt;
no_u="Error creando los directorios y permisos necesarios"&lt;br /&gt;
direc dir usu per &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; echo "$si_u" || echo "$no_u"&lt;br /&gt;
unset dir&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
#&amp;nbsp; Instala los paquetes necesarios&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
echo "Instalando los paquetes necesarios ..."&lt;br /&gt;
no_u="Error instalando los paquetes necesarios"&lt;br /&gt;
yum -y install binutils compat-libstdc++-33 elfutils-libelf  elfutils-libelf-devel elfutils-libelf-devel-static&amp;nbsp; gcc gcc-c++ glibc  glibc-common glibc-devel glibc-headers kernel-headers kernel-devel ksh  libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make  sysstat unixODBC unixODBC-devel pdksh &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp;  echo "$si_u" || echo "$no_u"&lt;br /&gt;
&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
#&amp;nbsp; Copia en ubicación y descomprimimos oracle&lt;br /&gt;
#--------------------------------------------------------------------------&lt;br /&gt;
dir="/opt/oracle"&lt;br /&gt;
sdir="/database"&lt;br /&gt;
echo "Copiando y descomprimiendo Oracle ..."&lt;br /&gt;
if [ $1 != "No" ] &amp;amp;&amp;amp; [ $1 != "no" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;archivo=( "$1" "$p2" )&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -d $dir$sdir ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo "La carpeta $dir$sdir existe. ¿Quiere seguir con la copia de Oracle en la carpeta adecuada?"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo "(1)Si (2)No"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while [ "$respuesta" != 1 ] &amp;amp;&amp;amp; [ "$respuesta" != 2 ]; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;read respuesta&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case&amp;nbsp; respuesta in&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;1) cop_desc archivo $dir&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;2) echo "Recuerda que debes descomprimir Oracle en $dir"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*) echo "Debes escoger entre 1 ó 2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;esac&amp;nbsp;&amp;nbsp;&amp;nbsp; # --- end of case ---&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cop_desc archivo $dir&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;br /&gt;
fi&lt;br /&gt;
chown -R oracle:oinstall $dir&lt;br /&gt;
&lt;br /&gt;
echo "La preparación ha terminado. Inicia sesión como usuario oracle y  si usas ssh -X recuerda que la variable DISPLAY debe ser localhost:10.0.  Después ejecuta $dir$sdir/runInstaller"&lt;br /&gt;
&lt;/bucle&gt;&lt;/code&gt;&lt;br /&gt;
Le damos permiso de ejecución y ejecutamos como root (sudo su, ya que necesita el PATH creado anteriormente)&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;chmod +x oracle.sh&lt;br /&gt;
./oracle.sh /ruta/linux_11gR2_database_1of2.zip&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Tras esto iniciamos sesión como usuario oracle y iniciamos la instalación&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;cd /opt/oracle/database&lt;br /&gt;
./runInstaller&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Seguimos los pasos de la instalación teniendo encuenta indicarle las siguientes opciones:&lt;br /&gt;
- Crear y configurar una base de datos&lt;br /&gt;
- Oracle Base: /opt/oracle&lt;br /&gt;
- Software localización: /opt/oracle/product/11.2.0/dbhome_1&lt;br /&gt;
- Localización archivos Database: /opt/oracle/oradata&lt;br /&gt;
- OSDBA Group: oinstall&lt;br /&gt;
- Directorio de Inventaro: /opt/oraInventory&lt;br /&gt;
&lt;br /&gt;
Para arrancar oracle puedes crear &lt;a href="http://ivan.kartik.sk/oracle/install_ora11gR2_elinux.html" onclick="onClickUnsafeLink(event);" target="_blank"&gt;un script al inicio&lt;/a&gt; o uno normal. Lo que tienes que tener en cuenta para estos es:&lt;br /&gt;
Variables de entorno&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ORACLE_OWNER=oracle&lt;br /&gt;
ORACLE_BASE=/opt/oracle&lt;br /&gt;
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1&lt;br /&gt;
ORACLE_SID=orcl&lt;br /&gt;
PATH=/usr/sbin:$PATH&lt;br /&gt;
PATH=$ORACLE_HOME/bin:$PATH&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Arrancar, parar aplicaciones ejecutado por el usuario oracle&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;lsnrctl start   #Abrir Listener&lt;br /&gt;
dbstart   #Abrir Base de Datos &lt;br /&gt;
emctl start dbconsole   #Abrir Oracle Enterprise manager&lt;br /&gt;
&lt;br /&gt;
emctl stop dbconsole   #Cerrar Oracle Enterprise manager&lt;br /&gt;
dbshut   #Cerrar Base de Datos&lt;br /&gt;
lsnrctl stop   #Cerrar Listener&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/6188973513407377565/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/6188973513407377565" rel="replies" title="1 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/6188973513407377565" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/6188973513407377565" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/08/instalar-oracle-11g-r2-en-centos-55_25.html" rel="alternate" title="Instalar Oracle 11g R2 en CentOS 5.5" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-7699248508673674389</id><published>2010-07-29T15:26:00.007+02:00</published><updated>2010-07-29T19:06:25.087+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Vim"/><title type="text">NERD Tree árbol de directorios para Vim</title><content type="html">Modificando a vim me encontré con NERD Tree un plugin que le aporta un árbol de directorios navegable. La verdad es que es muy útil cuando tienes que andar abriendo archivos de diferentes localizaciones. Con él podemos navegar entre directorios, abrir ficheros, en pantalla partida, en pestañas, de manera recusiva, añadir marcadores, ...&lt;br /&gt;
&lt;br /&gt;
Echaba de menos una función parecida en vim, así que cuando vi &lt;a href="http://www.flickr.com/photos/30496122@N07/2862367534/sizes/o/"&gt;el funcionamiento de NERD Tree&lt;/a&gt; no dude en instalarlo y probarlo de primera mano. Ha cumplido todas mis expectativas por lo que he decidido mostrarlo para todo aquel que no lo conozca. Para más información podéis visitar &lt;a href="http://www.blogger.com/%20https://github.com/scrooloose/nerdtree"&gt;la página del proyecto&lt;/a&gt;.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Si queremos instalarlo deberemos seguir los siguientes pasos. Descargamos el plugin, lo copiamos en la carpeta correspondiente y lo descomprimimos.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;wget -O NERD_tree.zip http://www.vim.org/scripts/download_script.php?src_id=11834&lt;br /&gt;
cd ~/.vim&lt;br /&gt;
sudo cp /ruta/NERD_tree.zip NERD_tree.zip&lt;br /&gt;
sudo unzip NERD_tree.zip&lt;br /&gt;
sudo rm NERD_tree.zip&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si tenemos otro plugin instalado podemos copiar a ~/.vim la carpeta nerdtree_plugin y el contenido de las carpetas plugin y doc dentro de las mismas que ya existen en dicha ubicación.&lt;br /&gt;
&lt;br /&gt;
Generamos la ayuda y reiniciamos vim. Dentro de este&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:helptags ~/.vim/doc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Después ya podemos ver en vim las funciones del plugin y los atajos de teclado&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:help NERD_Tree.txt&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Como con otras funciones que me interesan decidí mapear a una tecla la apertura y el cierre del plugin. Primero abrí una ubicación en el árbol. Dentro de vim&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:NERDTree /ruta/elegida&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Realice esto para aprovechar que la siguiente orden que abre y cierra el árbol en la última ruta. Mapeamos la tecla&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;map &amp;lt;tecla&amp;gt; :NERDTreeToggle&amp;lt;CR&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Podemos ver como denominar a la Tecla o la combinación de ellas con&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:help key-notation&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Tras esto disponemos de NERD Tree abierto y cerrado con una tecla para nuestra mayor comodidad.</content><link href="http://masvale-manya.blogspot.com/feeds/7699248508673674389/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/7699248508673674389" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/7699248508673674389" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/7699248508673674389" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/07/nerd-tree-arbol-de-directorios-para-vim.html" rel="alternate" title="NERD Tree árbol de directorios para Vim" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-3516751690726979977</id><published>2010-07-28T19:23:00.006+02:00</published><updated>2010-07-28T23:17:46.528+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Scripts"/><category scheme="http://www.blogger.com/atom/ns#" term="Vim"/><title type="text">Usar Vim como Bash Script IDE</title><content type="html">Últimamente estoy haciendo bastantes shell scripts, en bash más concretamente, por lo que he decidido de buscarme alguna herramienta que me facilite un poco la vida. Buscando un poco he encontrado un plugin para vim que convierte a este editor en un IDE para bash con código ya predefinido y la posibilidad de depurar a través de bashdb.&lt;br /&gt;
&lt;br /&gt;
Se que cuando empiezas a usar vim te puede resultar tedioso pero si pierdes un poco el tiempo en aprenderte los atajos de teclado se hace una herramienta imprescindible o cuanto menos útil, potente y rápida en comparación con otros editores, sin contar, además su independencia de las X en sistemas Unix like donde muchos equipos (servidores) prescinden de ellas.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Para más información podéis dirigiros a la &lt;a href="http://www.vim.org/scripts/script.php?script_id=365"&gt;página del plugin&lt;/a&gt; o a la &lt;a href="http://lug.fh-swf.de/vim/vim-doc/bashsupport.html"&gt;documentación online&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Primero instalamos bashdb para usarlo como depurador&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo aptitude install bashdb&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Descargamos el plugin, lo copiamos en la carpeta correspondiente y lo descomprimimos. Pese a estar en mi home no tenía permisos de escritura en la carpeta .vim y como no quise cambiarle permisos, utilicé sudo.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;wget -O bash-support.zip http://www.vim.org/scripts/download_script.php?src_id=9890&lt;br /&gt;
cd ~/.vim&lt;br /&gt;
sudo cp /ruta/bash-support.zip bash-support.zip&lt;br /&gt;
sudo unzip bash-support.zip&lt;br /&gt;
sudo rm bash-support.zip&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Creamos el archivo vimrc del usuario y añadimos un par de lineas para activar el plugin&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim ~/.vimrc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;filetype plugin on&lt;br /&gt;
filetype indent on&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Lo hemos instalado en el usuario pero si se quiere instalar para todos la ruta para los archivos sería /usr/share/vim/vim72/ y el archivo de configuración a modificar /etc/vim/vimrc.&lt;br /&gt;
&lt;br /&gt;
Ahora modificamos el valor de las variables que utilizara para crear la cabecera y demás&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim ~/.vim/bash-support/templates/Templates&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
En el siguente archivo podéis modificar, traducir la cabecera, el comenario de función ...&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim ~/.vim/bash-support/templates/bash.comments.template&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Reiniciamos vim y generamos la ayuda. Dentro de vim&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:helptags ~/.vim/doc&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Después ya podemos verla en vim&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;:help bashsupport&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si usas gvim te ha tenido que salir un nuevo menú llamado Bash donde elegir todas sus funciones. Veamos ya como trabaja sin gui:&lt;br /&gt;
&lt;br /&gt;
cuando creamos un archivo.sh nos coloca directamente la cabecera o en un archivo creado tecleando \ch y nos coloca el cursor para escribir la descripción&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim script.sh&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;#!/bin/bash - &lt;br /&gt;
#========================================================================&lt;br /&gt;
#&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;       ARCHIVO:  script.sh &amp;nbsp;&amp;nbsp;  USO:  ./script.sh &lt;br /&gt;
# &lt;br /&gt;
# &amp;nbsp;  DESCRIPCION:  &lt;br /&gt;
# &lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      OPCIONES:  ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;    REQUISITOS:  ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;          BUGS:  ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;         NOTAS:  ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;         AUTOR: Nebur (Más Vale Manya ...), masvalemanya@gmail.com&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;           WEB: http://masvale-manya.blogspot.com&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        CREADO: 28/07/10 18:26:42 CEST&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REVISION:  ---&lt;br /&gt;
#========================================================================&lt;br /&gt;
&lt;br /&gt;
set -o nounset                              # Treat unset variables as an error&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si quieres poner un bucle case tecleamos \sc y nos coloca el cursor para escribir la variable&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;case  in&lt;br /&gt;
)&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
)&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
*)&lt;br /&gt;
;;&lt;br /&gt;
&lt;br /&gt;
esac    # --- end of case ---&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Podéis ver los atajos de teclado en ~/.vim/bash-support/doc/bash-hot-keys.pdf para comentarios, comentarios de funciones (con descripción, argumentos, salida), bucles, código predefinido, ayuda de bash, lanzar el depurador ...&lt;br /&gt;
La verdad es que me ha gustado mucho y espero que os sea de utilidad.</content><link href="http://masvale-manya.blogspot.com/feeds/3516751690726979977/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/3516751690726979977" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/3516751690726979977" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/3516751690726979977" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/07/usar-vim-como-bash-script-ide.html" rel="alternate" title="Usar Vim como Bash Script IDE" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-100341596735625613</id><published>2010-07-24T22:33:00.009+02:00</published><updated>2010-08-12T23:42:54.542+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Pocket pc"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><title type="text">Sincronizar Ubuntu Lucid con Windows Mobile</title><content type="html">Para llevar un poco más de orden y eficacia decidí usar una pda para tener agenda, contactos, tareas ... en mi bolsillo. Así que desempolvé mi vieja HTC y la preparé a mi gusto. Busqué una rom, le hice un par de cambios, instalé algunos programas que necesitaba y algunos que no tanto.&lt;br /&gt;
&lt;br /&gt;
Ahora solo faltaba configurar Lucid para poder instalar/desinstalar programas, ver información del pocket pc, acceso lectura/escritura al sistema de ficheros y la tarjeta de almacenamiento, tener acceso a internet a través del pc y sincronizar mis datos bidireccionalmente con evolution y mi carpeta personal para los ficheros.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Añadimos este repositorio&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim /etc/apt/sources.list&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;## SYNCE&lt;br /&gt;
deb http://ppa.launchpad.net/synce/ppa/ubuntu lucid main&lt;br /&gt;
deb-src http://ppa.launchpad.net/synce/ppa/ubuntu lucid main&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
actualizamos la lista de paquetes&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo aptitude update&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si os diera un error GPG al actualizar&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D246C25D&lt;br /&gt;
sudo aptitude update&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
instalamos los paquetes necesarios&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo aptitude install multisync-tools multisync0.90 opensync-module-python opensync-plugin-evolution opensync-plugin-google-calendar opensync-plugin-synce python-opensync synce-gnomevfs synce-gvfs synce-hal synce-sync-engine synce-trayicon&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si tenéis activado el firewall (iptables con cualquiera de sus manejadores) debéis permitir la entrada del rango 169.254.2.0/24. Si no es así recomiendo que lo hagáis de manera inmediata. Podéis mirar estas referencias:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://help.ubuntu.com/community/Gufw"&gt;Gufw&lt;/a&gt;&lt;br /&gt;
&lt;a href="https://help.ubuntu.com/8.04/keeping-safe/C/firewall.html"&gt;Firestarter&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora reiniciamos y tras esto nos ha tenido que salir un icono con forma de pda en el área de notificación al lado del reloj. Desde de synce-trayicon tenemos todos nuestras expectativas cubiertas excepto la de sincronizar los datos. Que es lo que configuraremos a continuación, primero el perfil&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;synce-create-partnership “Nombre” “Files,Calendar,Media,Tasks,Notes,Contacts"&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
En el código anterior debemos indicarle lo que queremos que se sincronice separado por comas. También lo podemos hacer de manera gráfica en synce-trayicon &amp;gt; Nombre pocket pc &amp;gt; View device status &amp;gt; Create y poner los mismos datos. Si tenemos otro perfil creado de haber sincronizado con otro ordenador&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;synce-list-partnerships&amp;nbsp;&amp;nbsp; #listar los perfiles&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
podemos terminar todo el proceso, sincronizar y así conseguir que nuestro nuevo perfil obtenga datos, realizar una copia de todo (solo por precaución) y después borramos el perfil antiguo&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;synce-delete-partnership nombre_perfil_antiguo&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Seguidamente crearemos los miembros de la sincronización&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;msynctool --addgroup nombre&lt;br /&gt;
msynctool --addmember nombre synce-opensync-plugin&lt;br /&gt;
msynctool --addmember nombre evo2-sync&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
De la misma manera que en el paso anterior podemos hacerlo de manera gráfica. Vamos a Aplicaciones &amp;gt; Accesorios &amp;gt; Multisync-gui &amp;gt; Añadir y colocamos los datos anteriores.&lt;br /&gt;
&lt;br /&gt;
Por un bug (&lt;a href="https://bugs.launchpad.net/ubuntu/+source/opensync/+bug/565137"&gt;podéis verlo aqui&lt;/a&gt;) en el archivo opensync.py debemos descargarnos esta versión &lt;a href="https://qa.mandriva.com/attachment.cgi?id=16284"&gt;del archivo&lt;/a&gt; y sustituirlo&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo cp /usr/share/pyshared/opensync.py /usr/share/pyshared/opensync.py.original&lt;br /&gt;
sudo cp ruta/opensync.py_descargado /usr/share/pyshared/opensync.py&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ya solo queda sincronizar y comprobar que todo ha ido bien, desde actualizar en multisync-gui o&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;msynctool --sync nombre&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para más información podéis dirigiros a &lt;a href="http://www.synce.org/moin/FrontPage"&gt;la página de Synce&lt;/a&gt; y &lt;a href="http://www.opensync.org/wiki"&gt;la página de Opensync&lt;/a&gt;.</content><link href="http://masvale-manya.blogspot.com/feeds/100341596735625613/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/100341596735625613" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/100341596735625613" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/100341596735625613" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/07/sincronizar-ubuntu-lucid-con-windows.html" rel="alternate" title="Sincronizar Ubuntu Lucid con Windows Mobile" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-2640540546390750015</id><published>2010-07-08T04:18:00.005+02:00</published><updated>2010-07-26T02:41:58.066+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Redes"/><category scheme="http://www.blogger.com/atom/ns#" term="Scripts"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type="text">Script para hacer pings a hosts en Unix / Linux</title><content type="html">El otro día tuve que salir del paso cuando un sistema de monitorización, que simplemente hace pings a diferentes equipos y recoge los resultados, falló. Las estadísticas que da de el tiempo activo, el tiempo de respuesta, ... no se usan, lo querían simplemente para detectar las caídas y recuperaciones. Como tenía que estar al tanto de estas decidí "salvarme" con un simple script que hizo lo mismo que la herramienta, de "dudosa" compra, de que disponían.&lt;br /&gt;
&lt;br /&gt;
Mi caso es muy particular, estaba limitado en un Solaris antiguo sin permisos de instalación con carencia de comandos y con versiones antiguas de estos. No quería ver lo que hace el script sino simplemente los resultados y que estos no fueran demasiado rápidos.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Exporte los datos de los hosts de la base de datos. Tenía las ips en dos campos diferentes según el tipo de host y este mismo valor también estaba en dos campos diferentes (no me digáis porque ya que yo no hice la base de datos) por lo que tuve que tener en cuenta todas esas condiciones. Os dejo el ejemplo por si alguien le sirve para adaptarlo.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;#!/bin/bash&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
######################################################&lt;br /&gt;
#####&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;        DETECTOR DE CAIDAS DE HOSTS&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;         #####&lt;br /&gt;
######################################################&lt;br /&gt;
########################################&amp;nbsp;&amp;nbsp;   Nebur&amp;nbsp;&amp;nbsp;   ###&lt;br /&gt;
######################################################&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
# Comprobamos que no queden archivos temporales&lt;br /&gt;
# generados por el script y los creamos.&lt;br /&gt;
if [ -e "temp" ]; then&lt;br /&gt;
&amp;nbsp; rm -R temp&lt;br /&gt;
&amp;nbsp; mkdir temp&lt;br /&gt;
else&lt;br /&gt;
&amp;nbsp; mkdir temp&lt;br /&gt;
fi&lt;br /&gt;
touch ./temp/caidos&lt;br /&gt;
touch ./temp/recuperados&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
# Eliminamos " y espacios del archivo de datos&lt;br /&gt;
# ya que asi se exporto.&lt;br /&gt;
sed -e 's/\"//g' hosts.txt&amp;gt;hosts.int&lt;br /&gt;
sed -e 's/ /_/g' hosts.int&amp;gt;hosts&lt;br /&gt;
rm hosts.int&lt;br /&gt;
&lt;br /&gt;
# Creamos un bucle infinito.&lt;br /&gt;
while test 1 != 0&lt;br /&gt;
do&lt;br /&gt;
# Recojemos los valores que necesitamos &lt;br /&gt;
# realizamos los pings y según el resultado&lt;br /&gt;
# lo escribimos en un archivo temporal  &lt;br /&gt;
# llamado caidos o recuperados.&lt;br /&gt;
&amp;nbsp; hora=`date "+%H:%M:%S"`&lt;br /&gt;
&amp;nbsp; for linea in `cat hosts`&lt;br /&gt;
&amp;nbsp; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; cod=`echo $linea | cut -d';' -f1`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; descrip=`echo $linea | cut -d';' -f2`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; tipo_m=`echo $linea | cut -d';' -f3`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; tipo_v=`echo $linea | cut -d';' -f6`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ip_m=`echo $linea | cut -d';' -f4`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ip_v=`echo $linea | cut -d';' -f7`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; baja_m=`echo $linea | cut -d';' -f8`&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$baja_m" = "No" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$(ping $ip_m 2 | grep alive)" = "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$(grep $ip_m ./temp/caidos)" = "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "$cod;$descrip;$tipo_m;$ip_m;$hora" &amp;gt;&amp;gt; ./temp/caidos&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$(grep $ip_m ./temp/caidos)" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "$cod;$descrip;$tipo_m;$ip_m;$hora" &amp;gt;&amp;gt; ./temp/recuperados&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sed "/$ip_m/d" ./temp/caidos &amp;gt; ./temp/caidos_tmp&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv ./temp/caidos_tmp ./temp/caidos&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$(ping $ip_v 2 | grep alive)" = "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$(grep $ip_v ./temp/caidos)" = "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "$cod;$descrip;$tipo_v;$ip_v;$hora" &amp;gt;&amp;gt; ./temp/caidos&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ "$(grep $ip_v ./temp/caidos)" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "$cod;$descrip;$tipo_v;$ip_v;$hora" &amp;gt;&amp;gt; ./temp/recuperados&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sed "/$ip_v/d" ./temp/caidos &amp;gt; ./temp/caidos_tmp&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mv ./temp/caidos_tmp ./temp/caidos&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp; done&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; # Limpiamos la pantalla para que solo se muestre&lt;br /&gt;
&amp;nbsp; # la lectura de caidos en color rojo y de &lt;br /&gt;
&amp;nbsp; # recuperados en verde.&lt;br /&gt;
&amp;nbsp; clear&lt;br /&gt;
&amp;nbsp; echo ""&lt;br /&gt;
&amp;nbsp; echo "###############################################"&lt;br /&gt;
&amp;nbsp; echo "###&amp;nbsp;&amp;nbsp;   Lista de hosts caidos y recuperados &amp;nbsp;  ###"&lt;br /&gt;
&amp;nbsp; echo "###############################################"&lt;br /&gt;
&amp;nbsp; echo ""&lt;br /&gt;
&amp;nbsp; if [ "$(cat ./temp/caidos)" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e '\E[37;41m'"Hosts caidos"; tput sgr0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo ""&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for linea in `cat ./temp/caidos`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cod=`echo $linea | cut -d';' -f1`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; descrip=`echo $linea | cut -d';' -f2`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tipo=`echo $linea | cut -d';' -f3`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ip=`echo $linea | cut -d';' -f4`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cuando=`echo $linea | cut -d';' -f5`&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e '\E[37;41m'"El equipo $cod - $descrip - $tipo - $ip a caido a las $cuando"; tput sgr0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;
&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp; echo ""&lt;br /&gt;
&amp;nbsp; if [ "$(cat ./temp/recuperados)" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e '\E[37;42m'"Hosts recuperados"; tput sgr0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo ""&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for linea in `cat ./temp/recuperados`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cod=`echo $linea | cut -d';' -f1`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; descrip=`echo $linea | cut -d';' -f2`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tipo=`echo $linea | cut -d';' -f3`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ip=`echo $linea | cut -d';' -f4`&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cuando=`echo $linea | cut -d';' -f5`&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -e '\E[37;42m'"El equipo $cod - $descrip - $tipo - $ip a recuperado a las $cuando"; tput sgr0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;br /&gt;
&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp; rm ./temp/recuperados&lt;br /&gt;
&amp;nbsp; touch ./temp/recuperados&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; sleep 10&lt;br /&gt;
done&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Al final tenía en la pantalla del terminal una posible lista de hosts caídos y recuperados que comprobaba 300 hosts con un intervalo de un minuto.</content><link href="http://masvale-manya.blogspot.com/feeds/2640540546390750015/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/2640540546390750015" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/2640540546390750015" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/2640540546390750015" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/07/script-para-hacer-pings-hosts-en-unix.html" rel="alternate" title="Script para hacer pings a hosts en Unix / Linux" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-1328784919623897333</id><published>2010-07-03T19:16:00.030+02:00</published><updated>2010-11-02T15:32:30.041+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ISA Server"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft"/><category scheme="http://www.blogger.com/atom/ns#" term="Redes"/><category scheme="http://www.blogger.com/atom/ns#" term="Scripts"/><title type="text">Linux detrás de un proxy (ISA Server), incluso sus máquinas virtuales</title><content type="html">Tengo la necesidad de conectar mi equipo en diferentes redes, de las cuales varias tienen un ISA Server como proxy web para dar acceso a internet. Para este menester necesitas de un usuario/contraseña para poder validarte. Antes, ya que no quiero unir mi equipo al dominio, tenía un script donde indicaba las variables http_proxy, ftp_proxy, https_proxy según el lugar donde estaba, pero poner usuario/contraseña en una variable de entorno no me convencía nada.&lt;br /&gt;
&lt;br /&gt;
Para evitar esto disponemos de cntlm que nos facilita mucho la vida. Cntlm nos permite la autentificación NTLM, NTLMv2 de forma rápida y sencilla contra proxys HTTP, el reenvío de puertos, túneles HTTP, ... En lenguaje llano un proxy del proxy.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Una de las ventajas de usar cntlm es que se loga en los proxys haciendo hash a los passwords y no guardas en ningún lado contraseñas en texto plano. En varias distribuciones el paquete esta en los repositorios, pero sino, podéis dirigiros a la &lt;a href="http://cntlm.sourceforge.net/"&gt;página del projecto&lt;/a&gt; para descargarlo. Veamos los pasos a seguir.&lt;br /&gt;
&lt;br /&gt;
Instalamos el paquete&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo aptitude install cntlm&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Editamos el archivo /etc/cntlm.conf y modificamos los valores de usuario, dominio, proxy, vamos los datos necesarios para logarte en ISA Server (no poner el password) y el puerto de escucha. &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo vim /etc/cntlm.conf&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Después probamos el funcionamiento de cntlm. Nos pedirá la contraseña de la cuenta de usuario de Active Directory.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;cntlm -I -M http://masvale-manya.blogspot.com&lt;br /&gt;
...&lt;br /&gt;
Auth            NTLMv2&lt;br /&gt;
PassNTLMv2      E876EC9DEED1BA2F64FDF27D55BF73DC&lt;br /&gt;
...&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Nos arrojara un código parecido a este que pegaremos en /etc/cntml.conf y así ya tendremos el password cifrado. Otros parámetros del archivo de configuración interesantes son:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ISAScannerAgent         Wget/&lt;br /&gt;
ISAScannerAgent         APT-HTTP/&lt;br /&gt;
#ISAScannerAgent        Yum/&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Descomentamos las opciones apropiadas para tu sistema. Otra para mi muy útil es la de gateway. Uso alguna máquina virtual para opciones muy concretas y para que me funcionaran en estas circunstancias deberían de tener al misma configuración que el host. Con esta opción me permite que otros equipos se conecten a él. Para temas de seguridad tienes para configurar Allow/Deny y las reglas tu firewall.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;Gateway yes&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Reiniciamos el servicio y ya estará funcionando.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo /etc/init.d/cntlm restart&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Solo nos queda indicarle al sistema que use cntlm como proxy. Tenemos en cuenta la ip del host y el puerto de escucha antes indicado. Gnome menú &amp;gt; Sistema &amp;gt; Preferencias &amp;gt; Proxy de la red o como yo, si tienes equipos sin X, haces muchos cambios, te va más rápido, ... puedes configurarte un script para cambiar de proxy. Os dejo un ejemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
###############################################&lt;br /&gt;
#######&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;       ELEGIR PROXY A USAR&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;       #######&lt;br /&gt;
###############################################&lt;br /&gt;
############################# &amp;nbsp;   Nebur &amp;nbsp;   #######&lt;br /&gt;
###############################################&lt;br /&gt;
&lt;br /&gt;
# Verificamos que somos root&lt;br /&gt;
if [ $UID -ne 0 ]; then&lt;br /&gt;
&amp;nbsp; echo "Necesitas ser root (sudo su) para que el script funcione"&lt;br /&gt;
&amp;nbsp; exit &lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Menú para escoger el lugar donde estamos. Cambiar el valor &lt;br /&gt;
# de las variables según las necesidades. Si no quieres proxy&lt;br /&gt;
# comentar todas y dejar proxy=sin. Si no usas usuario y &lt;br /&gt;
# contraseñas comentalos y si precisas de esos valores poner &lt;br /&gt;
# usuario: y contraseña@&lt;br /&gt;
echo "Elige que proxy deseas usar y pulsa Intro"&lt;br /&gt;
echo "(1)Ninguno (2)Sitio (3)OtroSitio"&lt;br /&gt;
while [ "$sitio" != 1 ] &amp;amp;&amp;amp; [ "$sitio" != 2 ] &amp;amp;&amp;amp; [ "$sitio" != 3 ]; do&lt;br /&gt;
&amp;nbsp; read sitio&lt;br /&gt;
&amp;nbsp; case $sitio in&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 ) proxy=sin&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #puerto=&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #usuario=&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #pass=&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 ) proxy=localhost&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puerto=3128&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #usuario=&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #pass=&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3 ) proxy=localhost&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puerto=3128&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usuario="usuario:"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pass="password@"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; * ) echo "Debes escoger entre 1, 2 ó 3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br /&gt;
&amp;nbsp; esac&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# Realizamos los cambios para apt, wget &lt;br /&gt;
# y las apliaciones de la consola. &lt;br /&gt;
if [ "$proxy" = sin ]; then &lt;br /&gt;
&amp;nbsp; if [ "$(grep Acquire /etc/apt/apt.conf)" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sed -i '/Acquire/d' /etc/apt/apt.conf&lt;br /&gt;
&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp; if [ "$(grep '_proxy="' /etc/environment)" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sed -i '/_proxy="/d' /etc/environment&lt;br /&gt;
&amp;nbsp; fi &lt;br /&gt;
&amp;nbsp; if [ "$(grep 'use_proxy = on' /etc/wgetrc | grep -v '#use_proxy')" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sed -i 's/use_proxy = on/use_proxy = off/' /etc/wgetrc&lt;br /&gt;
&amp;nbsp; fi &lt;br /&gt;
else&lt;br /&gt;
&amp;nbsp; if [ "$(grep "Acquire" /etc/apt/apt.conf)" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sed -i '/Acquire/d' /etc/apt/apt.conf&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Acquire::http::Proxy "http://$usuario$pass$proxy:$puerto/";" &amp;gt;&amp;gt; /etc/apt/apt.conf&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Acquire::ftp::Proxy "http://$usuario$pass$proxy:$puerto/";" &amp;gt;&amp;gt; /etc/apt/apt.conf&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Acquire::https::Proxy "http://$usuario$pass$proxy:$puerto/";" &amp;gt;&amp;gt; /etc/apt/apt.conf&lt;br /&gt;
&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Acquire::http::Proxy "http://$usuario$pass$proxy:$puerto/";" &amp;gt;&amp;gt; /etc/apt/apt.conf&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Acquire::ftp::Proxy "http://$usuario$pass$proxy:$puerto/";" &amp;gt;&amp;gt; /etc/apt/apt.conf&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Acquire::https::Proxy "http://$usuario$pass$proxy:$puerto/";" &amp;gt;&amp;gt; /etc/apt/apt.conf&lt;br /&gt;
&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp; if [ "$(grep "_proxy="" /etc/environment)" != "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sed -i '/_proxy="/d' /etc/environment&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "http_proxy="http://$usuario$pass$proxy:$puerto/"" &amp;gt;&amp;gt; /etc/environment&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "ftp_proxy="http://$usuario$pass$proxy:$puerto/"" &amp;gt;&amp;gt; /etc/environment&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "https_proxy="http://$usuario$pass$proxy:$puerto/"" &amp;gt;&amp;gt; /etc/environment&lt;br /&gt;
&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "http_proxy="http://$usuario$pass$proxy:$puerto/"" &amp;gt;&amp;gt; /etc/environment&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "ftp_proxy="http://$usuario$pass$proxy:$puerto/"" &amp;gt;&amp;gt; /etc/environment&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "https_proxy="http://$usuario$pass$proxy:$puerto/"" &amp;gt;&amp;gt; /etc/environment&lt;br /&gt;
&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp; if [ "$(grep 'use_proxy = on' /etc/wgetrc | grep -v '#use_proxy')" = "" ]; then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sed -i 's/use_proxy = off/use_proxy = on/' /etc/wgetrc&lt;br /&gt;
&amp;nbsp; fi &lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
exit&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Pegamos el código en un archivo nuevo y modificamos las variables. &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;vim cambiar_proxy&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Le damos permisos de ejecución al archivo.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;chmod +x cambiar_proxy&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Para ejecutarlo simplemente&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;./cambiar_proxy&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Si aprovechando este script queréis ahorraros usar el Proxy de la red del menú de Gnome y realizar los cambios para las aplicaciones que recogen los datos de gconf podéis implementarlo en el script. Os dejo los datos a cambiar y/o tener en cuenta:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;gconftool --type bool --set /system/http_proxy/use_http_proxy false/true&lt;br /&gt;
gconftool --type string --set /system/http_proxy/host proxy&lt;br /&gt;
gconftool --type int --set /system/http_proxy/port puerto&lt;br /&gt;
gconftool --type bool --set /system/http_proxy/use_authentication false/true&lt;br /&gt;
gconftool --type string --set /system/http_proxy/authentication_user usuario&lt;br /&gt;
gconftool --type string --set /system/http_proxy/authentiation_password contraseña&lt;br /&gt;
gconftool --type bool --set /system/http_proxy/use_same_proxy false/true&lt;br /&gt;
gconftool --type bool --set /system/http_proxy/ignore_hosts excepciones&lt;br /&gt;
&lt;/code&gt;</content><link href="http://masvale-manya.blogspot.com/feeds/1328784919623897333/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/1328784919623897333" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/1328784919623897333" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/1328784919623897333" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/07/linux-detras-de-un-proxy-isa-server.html" rel="alternate" title="Linux detrás de un proxy (ISA Server), incluso sus máquinas virtuales" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2501386953683014506.post-8173265443948975480</id><published>2010-06-30T05:03:00.012+02:00</published><updated>2011-07-28T01:25:58.998+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Sistemas"/><title type="text">Instalar Ubuntu Lucid en fakeraid 0</title><content type="html">Para no variar tuve problemas al instalar Lucid en un pc que tengo con un fakeraid 0. Creo que fue solo en la 8.04 (y si me equivoco me perdonais hablo de memoria) donde se me instaló correctamente el grub habiendo configurado antes el paquete dmraid. Ya que cada vez que he tenido que configurar esa máquina he sufrido buscando información, leyendo documentación, … voy a dejar como he resuelto este problema por si a alguien le puede resultar de utilidad.&lt;br /&gt;
&lt;br /&gt;
Un detalle de agradecer es que Lucid viene ya con dmraid configurado y así una instalación con fakeraid X se puede realizar sin conexión a internet por sino dispones de ella por motivos del lugar o de la configuración de drivers de la tarjetas de red...&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Instalé de forma normal siguiendo los pasos por todos conocidos. Estuve apunto en último paso, en el que se confirman los datos antes de que empiece la instalación en sí, ir a opciones avanzadas y decirle que no instalara el gestor de  arranque grub, pero quería ver si iba a tener suerte. Cuando llego a la parte final de la instalación, cuando le toca el turno a grub me arrojo un error en la instalación del mismo. Tras ver un botón de “intentar arreglar el error” (no recuerdo exactamente) todavía tuve la esperanza, pero no me quedó otra que decirle que no instalara el gestor de arranque y que terminara la instalación.&lt;br /&gt;
&lt;br /&gt;
Tocaba entrar en la instalación para configurar grub manualmente. Estos primeros pasos son interesantes tenerlos aprendidos, ya que un día te puede fallar el sistema y de esta forma puedes entrar en él como si hubiera arrancado y solucionar el posible problema que tengas. Desde un terminal:&lt;br /&gt;
&lt;br /&gt;
Creamos un directorio donde montar la partición de la instalación fallida.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo mkdir /target&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Listamos las particiones del raid. Asumamos que para este howto la partición de nuestro Lucid es: nombreparticion1 y nuestro disco duro es: nombreparticion&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo dmraid -ay&lt;br /&gt;
RAID set "nombreparticion" already active&lt;br /&gt;
RAID set "nombreparticion1" already active&lt;br /&gt;
...&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Montamos  la partición de Lucid en la carpeta, los dispositivos, el sistema de archivos, archivos para comunicar con el kernel, … buscar los directorios en san google y veréis que contienen. Y así nuestra instalación fallida sera funcional.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo mount /dev/mapper/nombreparticion1 /target&lt;br /&gt;
sudo mount --bind /dev /target/dev&lt;br /&gt;
sudo mount -t proc proc /target/proc&lt;br /&gt;
sudo mount -t sysfs sys /target/sys&lt;br /&gt;
sudo mount -t devpts devpts /target/dev/pts&lt;br /&gt;
sudo cp /etc/resolv.conf /target/etc/resolv.conf&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Tras esto nos logamos en la instalación.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;sudo chroot /target&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Eliminamos los posibles restos de la instalación de grub2 (en mi caso, lo recomendable es no instalarlo al principio).&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;apt-get purge grub2 grub-pc&lt;br /&gt;
rm -R /boot/grub&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
La verdad es que desconozco si grub2 se puede instalar sin problemas, por lo  que opte por tiempo e ir a lo seguro la 0.97. Aquí tuve un error en la instalación de grub-common, que solucione reinstalando el mismo. &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;aptitude install grub&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Tendremos que decirle donde queremos instalarlo&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;grub-install /dev/mapper/nombreparticion&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ahora le indicamos cual sera nuestro disco duro y para ello editamos /boot/grub/device.map. Asumamos que nuestro disco duro o es único o el primario.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;(hd0) /dev/mapper/nombreparticion&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Entramos en grub&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;grub&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Le indicamos cual es nuestro disco duro&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;device (hd0) /dev/mapper/nombreparticion&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Le decimos que busque la “dirección” de la partición bootable y esta se la indicamos.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;find /boot/grub stage1&lt;br /&gt;
root (hd0,0)&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ponemos donde se instalara, si es en la mbr (hd0) o en la partición (hd0,0).&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;setup (hd0)&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Salimos y actualizamos los cambios&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;quit&lt;br /&gt;
update-grub&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Llegados a este punto tenia mi sistema funcionando correctamente y decidí probar la actualización a grub2 porque podía volver atrás sin comprometer el sistema. Instale y me arrojo varios errores de “You have a memory leak (not released memory pool):[0x8ab07e8]” no se bien porque. Probé grub2 con la opción Chainload into Grub 2 y arranco sin problemas. Pero al no disponer de tiempo para ver a que eran debidos esos errores y corregirlos purgué grub2 y volví a la versión anterior. A ver si un día me animo y amplio esta entrada.</content><link href="http://masvale-manya.blogspot.com/feeds/8173265443948975480/comments/default" rel="replies" title="Enviar comentarios" type="application/atom+xml"/><link href="http://www.blogger.com/comment/fullpage/post/2501386953683014506/8173265443948975480" rel="replies" title="0 comentarios" type="text/html"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/8173265443948975480" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/2501386953683014506/posts/default/8173265443948975480" rel="self" type="application/atom+xml"/><link href="http://masvale-manya.blogspot.com/2010/06/instalar-ubuntu-lucid-en-fakeraid-0.html" rel="alternate" title="Instalar Ubuntu Lucid en fakeraid 0" type="text/html"/><author><name>Nebur</name><uri>http://www.blogger.com/profile/08741428541546070188</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><thr:total>0</thr:total></entry></feed>