martes, 13 de noviembre de 2012

VI Friki my friend

A la vista del título de esta entrada muchos estaréis pensando "Que nivel de inglés tiene este tío", pero realmente de lo que voy a hablaros es de que para ser un friki de la vieja escuela hay que dominar el editor VI, (y emacs, pero eso lo dejamos para otra entrada).

Nos saltamos la historia de VI, que podéis buscar en la wikipedia si queréis, y vamos al lío.
Nota: Estos comandos son válidos para VI y para VIm (VI improved, o sea el VI mejorado con resaltado de código y más)

Iniciar VI

Desde el prompt de un terminal podemos simplemente pulsar
$ vi
e iniciaremos el editor con un documento en blanco sin nombre o tecleamos
$ vi nombre
y se abre el archivo nombre para su edición o se crea en caso de que no existiera.


VI tiene 2 modos de trabajo el modo comandos y el modo de inserción; en el modo de comandos las teclas que pulsemos tienen funciones especiales, podemos pasar al modo de comandos en cualquier momento pulsando la tecla ESC, También conviene recordar que los comandos son diferentes con teclas mayúsculas y minúsculas.

Salir de VI

Desde el modo de comandos podemos salir tecleando :q y pulsando enter, si tienes cambios sin grabar te lo indicará, podemos grabar con la combinación :w (para cambiarle el nombre :w nombre) y también combinar los 2 comandos :wq con lo que grabaría y saldría del editor, también realizaríamos lo mismo pulsando ZZ.
La forma de salir sin grabar los cambios es tecleando :q! y enter.

Moverse por el editor

Para moverse  por el editor podemos usar las flechas o en el modo de comandos también se pueden usar las teclas h j k l, que respectivamente serían izquierda, abajo, arriba y derecha.

Modo inserción

Los comandos que nos harían entrar en el modo de inserción son los siguientes: 

i Nos pondría el punto de inserción antes del cursor.
I Nos pondría el punto de inserción al principio de la línea
a Nos permitiría añadir texto detrás del cursor
A Añadiríamos texto al final de la línea
o Nos pondría el punto de inserción en la línea de abajo de la actual
O Nos pondría el punto de inserción en la línea de encima de la actual

Reemplazar texto (desde el modo de comandos)

[num]r[car] Reemplazar el número de caracteres (num) por [car], o uno si se omite num (repetiría num veces el carácter indicado).
R Reemplazar texto desde la posición del cursor hasta que pulsemos ESC
[numero]s Substituir el número de caracteres (num) por texto a insertar, o un único carácter si se omite el número. 
S Substituir la línea actual
C Cambiar hasta el final de la línea
[numero]cw Cambiar el número de palabras, o una si se omite num
J Unir a la línea actual la siguiente
[num]x borra el número de caracteres (num) o 1 si se omite.
u deshacer (undo) la última acción
U deshacer todos los cambios en la linea actual

Copy & Paste

Que sería de un editor de texto sin las funciones básicas de copiar, cortar y pegar.
[num]yy Copia num lineas al buffer general
[num]dd Corta num lineas y las mete en el buffer general
D Corta desde el cursor hasta el final de la linea
p Pega el contenido del buffer después del cursor
P Pega el contenido del buffer antes del cursor
. Repite el último comando de actualización realizado (borrar,pegar,sustituir)

Hasta aquí llegarían los comandos básicos de vi, para comandos más avanzados, como podrían ser búsquedas, buffers adicionales, etc... os remito a la sección de tutoriales aquí.

viernes, 9 de noviembre de 2012

Revista HD nº 0


Quiero presentaros, a los que no la conozcáis ya, a la revista Hackers & Developers, acaba de publicarse el número 0, con licencia Creative Commons. Se trata de una revista digital realizada por 8 chicas en las que se trata temas tan interesantes como son el Software Libre, el Hacking y la Programación.

Las creadoras de esta gran revista de la que esperamos ansiosos en nuevo número son:

Celia Cintas Licenciada en Informática http://yetanotherlog.wordpress.com/
Eugenia Bahit Arquitecta GLAMP & Agile Coach http://www.eugeniabahit.com/
Eliana Caraballo Ingeniera de Sistemas http://co.linkedin.com/in/elianacaraballoa
Filly Programadora http://www.missfilly.com.ar
Indira Burga Ingeniera de Sistemas http://about.me/indirabm
Milagros Infante Est. Ingeniería de Sistemas http://www.milale.net/
Sorey Garcia Arquitecta de Software http://soreygarcia.com
Yecely Diaz Maestra en Inteligencia Artificial http://silvercorp.wordpress.com

Podeis descargar el número 0 desde este aquí.

Y si quereis visitar su página simplemente pulsad en la imagen superior.

Felicitaciones a las autoras. 





jueves, 1 de noviembre de 2012

Indispensable para el administrador

Todo administrador de sistemas linux debería tener unas herramientas básicas para facilitar su tarea cuando usa el terminal, por ejemplo:

Mejora del comando top usando htop, las diferencias principales entre top y htop son:

  • En htop puedes desplazarte por la lista vertical y horizontalmente para ver todos los procesos y líneas completas de comandos.
  • El top está sujeto a un retardo por cada tecla no asignada presiones (especialmente molesto cuando tecleas secuencias de escape múltiples por accidente).
  • htop se inicia más rápido (top parece recoger datos durante algún tiempo antes de mostrar nada).
  • En htop no es necesario que escribas el número de proceso para matar un proceso, en top si es necesario.
  • En htop no es necesario escribir el número de proceso o el valor de prioridad para cambiar la prioridad (renice) de un proceso, en top si.
  • htop soporta el uso del ratón, top no
  • top es más veterano, y por lo tanto, más utilizado y probado. 
En estas imágenes podemos ver la diferencia




     
Cuando estás auditando un sistema te dejas las retinas a base de revisar logs, para hacer la tarea más sencilla podemos usar ccze, que es un coloreador de logs robusto y modular con plugins para apm, Exim, fetchmail, httpd, postfix, procmail, squid, syslog, ulogd, vsftpd, xferlog, y más.

Aqui vemos 2 ejemplos el primero la salida del log de dmesg normal y la siguiente pasandolo a través de ccze, juzgad vosotros mismos.




Y que no se nos olvide el coloreado del prompt, sobre todo para el usuario root para asi poder distinguir cuando somos root y usuarios normales, y sobre todo en que sistema remoto estamos jajaja (Este post es un copy & paste puro y duro del post de siddharta que podeis ver aquí, y como estaba tan claro me he permitido reproducirlo, gracias siddharta por este post.

    

Cada usuario del sistema tiene su propio archivo de configuración para el shell Bash, y en dicho archivo se guardan varias opciones y variables, entre ellas está la sección para resaltar el color del prompt.
El archivo es /home/nombre-del-usuario/.bashrc . Este archivo está oculto porque tiene un punto al inicio del nombre. Es necesario abrir dicho archivo de manera normal (es decir sin usar sudo, gksudo, kdesudo) y buscar la siguiente sección:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

A la última línea se le debe quitar el signo numeral (#) para que ya no sea omitida esa instrucción, debiendo quedar así:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

Posteriormente se guardan los cambios y cierra el archivo. Para que los cambios tengan efecto es necesario ejecutar lo siguiente en la terminal:
cd
. .bashrc
ó en su lugar:
cd
source .bashrc

De inmediato se observará que ahora el prompt se muestra de color verde, contrastando con el resto del texto de la terminal. Esta configuración aplicará tanto en terminales virtuales -por ejemplo Konsole en KDE, ó Terminal en GNOME- como para las Consolas (tty1, tty2, tty3, etc.), incluso desde una sesión vía SSH.
Si se desea usar otro color que no sea verde es necesario volver a abrir el archivo y buscar esta sección:
if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

En esa sección se indica qué se va a mostrar en el prompt y con qué colores. La segunda línea es la que se debe modificar, y a continuación resalto con negrita dónde está el código para el color:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Ese valor se puede cambiar por alguno de los mostrados en la siguiente lista:
Negro          0;30          Gris obscuro   1;30
Rojo           0;31          Rojo claro     1;31
Verde          0;32          Verde claro    1;32
Café           0;33          Amarillo       1;33
Azul           0;34          Azul claro     1;34
Púrpura        0;35          Púrpura claro  1;35
Cian           0;36          Cian claro     1;36
Gris claro     0;37          Blanco         1;37

De igual manera, tras hacer el cambio hay que guardar el archivo y volver a cargar la configuración como se explicó anteriormente.
En lo personal me gusta usar color verde sobre el fondo negro para mi propia sesión. Y prefiero usar el color rojo claro para cuando estoy trabajando como root.
Para modificar el prompt de root se debe abrir (como root) el archivo /root/.bashrc y buscar la siguiente sección:
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color)
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    ;;
*)
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    ;;
esac

y escribir el signo numeral (#) al principio de cada línea, quedando así:
# set a fancy prompt (non-color, unless we know we "want" color)
#case "$TERM" in
#xterm-color)
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#    ;;
#*)
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#    ;;
#esac

Posteriormente se busca la siguiente sección:
# Comment in the above and uncomment this below for a color prompt
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

y se elimina el signo numeral (#) de la segunda línea, quedando así:
# Comment in the above and uncomment this below for a color prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

en esa misma segunda línea se cambia el valor 1;32 (verde claro) por 1;31 (rojo claro), quedando así:
# Comment in the above and uncomment this below for a color prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Se guardan los cambios y se cierra el archivo. La próxima vez que en la terminal se inicie sesión como root se observará que ahora el prompt para root se muestra en color rojo claro:
sudo su

Así es más fácil identificar, con la ayuda del color rojo, que se está usando la sesión de root, y por lo tanto todo debe hacerse con más cuidado.