domingo, 23 de diciembre de 2012

Administración de sistemas con Midnight Commander


El Norton Commander
http://en.wikipedia.org/wiki/Norton_Commander

Hacia 1988 estaba dando mis primeros pasos en IT, y había un pequeño team de proto-administradores con los que nos pasábamos todo el día desformateando diskettes (para ver qué tenían que los profes no querían que viéramos!), luego de un tiempo empezamos a necesitar desfragmentar y editar los filesystem a nivel de bloque, y descubrimos unas herramientas tremendas, las Norton Utilities. Así nos enteramos que existía el nc (Norton Commander, la evolución del primitivo "NCD" Norton Change Directory), resulta que los profes usaban usaban esta herramienta asiduamente (todos teníamos la misma pregunta "¿qué herramienta DOS permite que la cierres apretando una sola tecla?", la tecla era F10 por cierto), y no nos querían contar cual era, la cerraban rápido cuando aparecían los alumnos y no podíamos ver cual era, nos decían algo como "no les va a servir, es muy avanzada". En fin. Sí que servía, en vez de tener que estar tipeando comandos DOS, con nc podíamos simplemente teclear una o dos veces y realizar tareas 
habituales de adm. de archivos, pero a una velocidad mucho mayor.


El administrador de archivos Midnight Commander (mc) 
mc es básicamente una copia fiel del viejo nc de DOS pero para Linux, con características avanzadas y tuneadas al año 2000 (y no más allá de esos años, no se preocupen, no hace falta más).

Avance rápido a 1999, empecé a usar Linux de corrido por fin (luego de estar tonteando desde el 96'), ya podía hacer la mayoría de las cosas de las que hacía en Win98, pero me faltaba una herramienta como el Explorador de Archivos, rápida, efectiva; no había nada así de bueno y gráfico en Linux todavía, así que me puse a ver esta herramienta modo texto, mc, que ya conocía, pero no le había prestado atención:

http://es.wikipedia.org/wiki/Midnight_Commander
http://www.atareao.es/ubuntu/software-para-tu-ubuntu/midnight-commander-un-gestor-de-dos-paneles-para-el-terminal/

Me resultaba un tanto shockeante estar en la consola y estar usando una herramienta gráfica (creo que mc era la única que conocía, todavía había muy pocas herramientas usando Ncurses - http://es.wikipedia.org/wiki/Ncurses ).


Arma secreta nro. 1: mc para sysadmins
Mc es ciertamente una herramienta top level para mi workflow como sysadmin. Cuando la descubrí, empecé a utilizarla principalmente para ahorrarme el tener que aprenderme uno o dos comandos (find, ln, chown y chmod recursivos), cuando estaba apurado tratando de "activar" mi placa de sonido.

mc no tuvo un equivalente en modo gráfico hasta muchos años después, con la aparición de Krusader (www.krusader.org), que fue el primer adm. de archivos que podía replicar exactamente el workflow usual dentro de mc (y por ende su utilidad).


Más allá de las obvias ventajas, hace unos años atrás noté que algunos sysadmins en Corrientes dejaban de "mostrar" mc durante las charlas en eventos, o cuando me estaban mostrando algo en algun Linux, directamente no lo usaban, ni sabían que existía en gral. Es insufrible (y muy antiproductivo), esperar durante una charla por ejemplo, que cualquiera tipee "a mano" su camino con el comando "cd" entre, por ej. /var/www/sitio/imagenes, luego a /var/www/cgi-bin, luego a /etc/apache2, luego de vuelta a /var/www/sitio, y cometiendo 5 errores de tipeo en el camino (al final los tipos terminaban abriendo una interfaz gráfica, abrían luego 5 consolas, y se metía a cada directorio que iban a usar). En mc podés tener dos directorios abiertos, uno en cada panel, y usar dos (2) teclas para llegar rápidamente a cualquier directorio, sin necesidad de levantar los dedos de las teclas < y >.


De hecho tuve varios conocidos y compañeros de trabajo que eran sysadmins con un año o dos de experiencia de trabajo real, y no conocían mc. El origen de este issue parece ser el que estas personas se habían iniciado como sysadmins con algunos cursos, principalmente basados en Ubuntu, y en esos cursos nadie les mostró que existía mc (ni idea del por qué). Los mismos sysadmins novatos, al no estar familiarizados con el ambiente de administración (www.planetsysadmin.com por ejemplo), ni siquiera tenían idea de que existiera algo tan útil como mc.

En realidad, un sysadmin experimentado puede replicar parte de la funcionalidad de mc, e inclusive tener la misma velocidad al trabajar con archivos (al trabajar, pero NO al tener que moverse y explorar directorios continuamente). En cambio, para los sysadmins novatos mc es una facilidad que no deberían dejar de aprovechar, ya que normalmente están a años de poder trabajar con la misma precisión y velocidad que les brinda mc desde la interfaz gráfica modo texto.


Hay varios motivos por los cuales uso mc para administrar sistemas:

- Bajar la tendencia a errores humanos accidentales (solamente por esto vale la pena usar un file manager gráfico en consola),

- Velocidad de navegación por los filesystems, usando una característica bastante esotérica de activar: "navegación en modo lynx", básicamente podés navegar el filesystem usando solamente las teclas de flechas < y >, y así "subir" y "bajar" por el arbol de directorios, muy rápido (es 100% imposible moverse en consola tan rápido con el comando cd, como uno se puede mover con el modo lynx en mc, no importa si tenés 1 año o 10 años de administrador de sistemas),

El modo de navegación lynx no estuvo activado por default en ningun mc que haya instalado desde 1999 en adelante, lo tenés que configurar, según la versión de mc: 

(en versiones viejas, la instalan Debian/Ubuntu) F9 > Configuracion > y en la ventana "Configuración" tildar - con la barra espaciadora - "Navegación al estilo Lynx"

(en versiones nuevas, la instalan Fedora/Opensuse) F9 > Paneles > y en la ventana "Opciones de los paneles" tildar - con la barra espaciadora - "Navegación al estilo Lynx"

[* tip: activen el "drop-down menu", así al apretar F9 los menúes aparecen sin necesidad de hacer F9 y luego flecha abajo ]

- Awareness: sin necesidad de estar corriendo "pwd" y "ls" cada dos o tres comandos "cd", en todo momento sé, sin duda alguna en qué directorio estoy ubicado y qué archivos y directorios existen allí (no necesito tampoco correr ls -la para ver permisos, fechas, y propietarios de los archivos, en mc los tengo a la vista todo el tiempo),

- Velocidad y facilidad de administración (por ej. si tengo que elegir 14 archivos de entre 35 para moverlos de un directorio a otro: me sitúo en el directorio origen, tab, me situo en el directorio destino, tab, vuelvo al directorio origen, y con la tecla INS selecciono los archivos que quiero mover; 14 de 35 no parece mucho? Si tengo que mover 200 archivos de entre 400, es un trabajo de 10 minutos, incluso si los nombres no son secuencias - tipo file1,file2,file3, etc.)


- mc te permite tener el filesystem local en un panel, y en el otro podés conectarte a otro linux (vía SSH, FTP) o Windows (Samba). Así que las tareas de adm. de archivos remotos se facilitan y aceleran de modo exponencial. 

Respecto a esto último ví varias veces como sysadmins ya con un par de años de experiencia montando LAMPs y cosas similares, se logueaban vía SSH a un server remoto y se ponían a configurar un server FTP para poder copiar archivos a ese server desde un cliente FTP gráfico (porque tenían que trabajar con un par de centenares de files y sin nombre contigûos). Se sorprendían al ver que luego de un "apt-get install mc", podíamos directamente usar mc para conectarnos al server vía SSH y elegir a mano los files en el server de origen y copiarlos fácilmente al server destino (mc brinda la clásica barrita de progreso, y tiene facilidades extendidas, ya que cuando mc encuentra un file con el mismo nombre en el directorio de destino da opciones, y luego continúa con las tareas en ejecución, lo mismo si encuentra algun problema de acceso y no puede escribir/leer algun file/directorio).


Para tareas habituales y avanzadas de adm. de archivos en Linux y desde una consola, básicamente no encontré una manera más rápida, efectiva y segura de hacer muchas (un montón) tareas en poco tiempo y con alta precisión (más aún cuando trabajo con centenares a miles de archivos y tengo que copiarlos/moverlos).

En Debian/Ubuntu

apt-get install mc

En Fedora / Red Hat

yum install mc

En Opensuse:

zypper in mc


Arma secreta nro. 2: mcedit

En una consola tipear "mcedit", apretar F9, y acceden al menú de este editor de texto. Viendo lo que se puede hacer, se pueden imaginar la utilidad de este editor y su facilidad de uso.

Un plus tremendo de mc, es su editor de texto, mcedit. Disponible típicamente haciendo F4 (Editar), sobre un archivo. Tenemos resaltado de sintaxis para Bash cuando codeamos scripts, copiar/pegar texto (se banca muy bien el workflow de: "copiar texto en Windows (desde un notepad)" > "pegar en un archivo abierto en mcedit con la tecla INS"). Y muchas cosas más.

El otro día estaba trabajando con Nano, y un log me indicaba que tenía que editar desde la línea 39 hasta la 54 de un archivo de configuración. Nano no tiene feedback visual de en qué linea estoy ubicado, mcedit sí la tiene (arriba, se ve la cant. de líneas del file, y la línea actual, que cambia si subimos o bajamos por el file), cambié a mcedit hice ALT+l, escribí el nro. de línea 39, salté ahí, luego ALT+l, escribí 54 y ya ví todo el bloque de texto a editar (luego hice F3 y - sin tener que alejar el dedo de F3 - marqué el bloque con las teclas de flechas, F3 de vuelta y terminé de marcar el bloque, luego con F8 lo borré).

En realidad si sabés usar bien Nano, más o menos tenés casi todo lo básico (entrar, editar, guardar y salir), y un poco más (CTRL+g), que también tiene mcedit.

Pero en mcedit tenés feedback visual (eleva el awareness y baja la tendencia a errores humanos) - en Nano no tenés feedback visual directamente - , resaltado de sintaxis para un par de lenguajes (se puede desactivar/activar desde la GUI), nros. de línea a la izq. de cada línea, líneas actuales en la barra superior, menues visuales sin necesidad de recordar/revisar a cada rato los atajos de teclado, etc. 

Es un misterio para mi por qué los cursos para sysadmins novatos enseñan Nano (como editor fácil de usar, pero tenés que memorizar muchos shortcuts), y no enseñan mcedit (tenés un menú gráfico a mano, ahí están las opciones y herramientas del editor, y si te gustan los shortcuts, tambien los tenés a la vista), incluso aunque a veces enseñen algo de uso de mc.

Siempre recomiendo mcedit por sobre Nano, más allá de que mcedit tiene más funcionalidad que Nano, me parece un buen equilibrio entre Nano (editor básico), y vi (editor avanzado). Deberías probarlo y ver.


En Ubuntu, Nano viene como editor por defecto, podeś cambiar a mcedit (luego de instalar mc), con:

sudo update-alternatives --config editor


Links:

Midnight Commander / MC Tutorial
http://www.trembath.co.za/mctutorial.html

No hay comentarios: