Redirección de datos en Bash

La redirección de datos es un elemento básico de Bash ya que nos permite controlar hacia dónde se volcarán los datos de salida de un comando o script, o de dónde obtenemos los datos de entrada.

Tenemos tres descriptores:

  • stdin: Entrada estándar.
  • stdout: Salida estándar. También se abrevia con el número 1.
  • stderr: Error estándar. También se abrevia con el número 2.

Esto nos dará varias opciones. La primera, redirigir la salida estándar a un fichero, para lo que usamos el operador >:

ls -l > fichero.txt

En el ejemplo de arriba ejecutamos el comando ls -l pero le decimos que nos guarde el resultado en un fichero. Ahora vamos a redirigir el error estándar a un fichero, usando el operador 2>:

grep pri * 2> error.txt

En este caso ejecutamos el comando grep pri * y lo que sacamos al fichero son los errores. Luego podemos combinar la salida y sacar la salida el estándar por el error estándar o viceversa:

#Sacamos el error estándar por la salida estándar
grep pri * 2>&1
#Sacamos la salida estándar por el error estándar
grep pri * 1>&2

Finalmente vamos a ver cómo sacar la salida y el error estándar juntos a un fichero:

grep pri * &> todo.txt

Esto es muy útil si queremos ejecutar un comando o un script en silencio, por ejemplo uno que se ejecute en una tarea programada con cron, ya que no veremos nada en pantalla pero tendremos nuestro propio log con los datos de lo ejecutado.

Abrir SQL-Server Management Studio desde el intérprete de comandos

¿Cómo abro el Management Studio de SQL-Server desde el terminal de comandos? Pues si es el de SQL-Server 2005 ejecutando sqlwb.exe

sqlwb.exe

Acepta varios parámetros:

  • -S: La instancia a la que nos conectamos
  • -d: La base de datos a la que nos conectamos
  • -E: Usar autenticación de Windows
  • -U: Usuario de SQL-Server
  • -P: Contraseña del usuario
  • [file_name[, file_name]]: Ficheros a cargar

Para SQL-Server 2008 o SQL-Server 2012 se usa SSMS.exe

SSMS.exe

La lista de parámetros que acepta es la misma que en el 2005, podéis verla arriba.

Linux: Cómo añadir un nuevo disco a un RAID 0

Ayer me econtraba en la siguiente tesitura: un servidor Ubuntu con dos discos en RAID0 al que hay que añadir un tercer disco pero sin borrar los datos que ya hay en el array. ¿Cómo lo hago? Esto me funcionó para un Ubuntu Server con kernel 4.4 así que en SO bastante nuevos debería funcionar.

Bueno, desde la versión 2.6.35 del kernel es posible hacerlo con mdadm con el siguiente comando. Para el ejemplo supongamos un raid llamado md1 con dos discos y un nuevo disco llamado sdd

mdadm --grow /dev/md1 --level=0 --raid-devices=3 --add /dev/sdd

Básicamente usamos grow sobre el array que ya tenemos, ponemos el número de discos que serán ahora en raid-devices y finalmente ponemos qué disco añadimos con add.

Comandos básicos de Linux para gestión de procesos

Un tip rápido y práctico como el de los puertos del otro día (lo estoy haciendo para un compañero de trabajo) ¿Cuáles son los comandos básicos de Linux para la gestión de procesos del servidor?:

  • ps: muestra los procesos activos.
  • ps aux: ps pero con más detalle.
  • kill pid: mata los procesos con el pid pid
  • killall proc: mata todos los procesos llamados proc
  • bg: lista los procesos parados o en segundo plano, arranca procesos parados en segundo plano.
  • fg: trae el proceso más reciente a primer plano.
  • fg n: trae el proceso n a primer plano.

Siete comandos de Linux básicos para la configuración de redes

Vamos con un articulillo técnico que os había prometido. Recopilamos una serie de comandos de Linux básicos para el trabajo y la configuración de redes. Nada complicado en exceso pero herramientas básicas y funcionales que son de uso habitual para quien ande trasteando en temas de redes.

  1. Ping: Envía un mensaje ICMP incrustado en un paquete IP, comprobando la conectividad entre dos nodos. El comando se ejecuta hasta que pulsemos las teclas Ctrl + c. ping ejemplo
  2. Netstat:  Es una herramienta que nos muestra las conexiones activas de un equipo. Esta herramienta acepta muchos parámetros: -r muestra la tabla de enrutamiento, netstat -r-p nos saca el nombre del programa para cada socket,netstat -p -a todos los puertos a la escuchanetstat -a
  3. Tcpdump: Es una herramienta que permite monitorizar el tráfico de red, mostrando en tiempo real los paquetes transmitidos y recibidos.tcpdump
  4. Tracepath: Traza los nodos a través de los que viajan nuestros paquetes en su camino hacia el destino que le definamos. tracepath
  5. Route: Es una herramienta que nos permite manipular las tablas de enrutamiento del sistema.
    #añadir ruta a la tabla
    route add -net 8.8.8.8/24 gw 192.168.100.1
    #eliminar ruta de la tabla
    route del -net 8.8.8.8/24 gw 192.168.100.1
    #definir puerta de enlace por defecto
    route add default gw 192.168.100.1
    
  6. Dhclient: Si lo ejecutamos con -r y con permisos lo que hace es «liberar» nuestra IP y solicitar otra al servidor DHCP.dhclient
  7. Ifconfig: Configuración de interfaz. Nos permite configurar o desplegar diversos parámetros de las interfaces de red como la máscara o la dirección IP. Acepta varios parámetros, y si lo ejecutamos sin pasarle ninguno nos dará información sobre las distintas interfaces. Los más usados son:
    • up: Marca la interfaz como disponible. Por ejemplo ifconfig eth0 up.
    • down: Marca la interfaz como no disponible. Por ejemplo ifconfig eth0 down.
    • dirección ip: Si ponemos una ip esta le será asignada a esa interfaz, teniendo de esta forma una ip estática (para DHCP está Dhclient). Por ejemplo ifconfig eth0 192.168.100.2.
    • netmask: Para definir una máscara de red. Por ejemplo ifconfig eth0 netmask 255.255.255.0 .
    • broadcast: Nos permite definir una ip como dirección de difusión. Por ejemplo sudo ifconfig etho broadcast 172.16.25.98.
    • promisc: Pone la interfaz en modo promiscuo, de forma que captura todos los paquetes, vayan dirigidos a ella o no. Por ejemplo ifconfig eth0 promisc.

Deshabilitar el teclado de un portátil en linux

Ayer el teclado del portátil me pegó un susto muy cabrón. No tengo claro qué le pasa (hoy ha dado un poco por culo también) pero de golpe hay teclas que se «pulsan» solas. Ayer pasaba con el CTRL y hoy con la flecha derecha. La parte buena es que tenía un teclado USB, y con cierto esfuerzo logré deshabilitar el teclado para funcionar sólo con el externo. Os explico como:

Empezamos abriendo una consola de comandos, y ahí ponemos

ximput --list

Esto sacará un listado de los dispositivos de entrada del equipo, tal que así:

consola xinput

Como puedes ver en este caso es el dispositivo número 11 (no siempre es el mismo, depende de si se han conectado más dispositivos externos, por ejemplo). Entonces bastaría con un comando para deshabilitar, y otro para rehabilitar:

#este desconecta
#cambia el 11 por el número de tu dispositivo
xinput set-int-prop 11 "Device Enabled" 8 0

#este reconecta
xinput set-int-prop 11 "Device Enabled" 8 1

Esta configuración se pierde al reiniciar, no es permanente. Podrías incluir el comando en el init.d para que se ejecute en la carga… pero si has insertado un teclado USB puede que el número no coincida.

Debian vs Mint vs Ubuntu: ¿qué Linux usar?

Bueno, lo justo sería comenzar diciendo que Linux no se reduce a estas tres distribuciones hay más «familias Linux». Pero como usuario estoy más familiarizado con las distribuciones de la familia Debian (puede que algún día me vaya al lado Red Hat y me saque un Fedora vs Red Hat vs openSuse vs Oracle Linux) voy a centrarme en esta rama y en sus tres distribuciones más populares.

  • Debian: Lo justo es comenzar con la madre, con Debian. A fin de cuentas los otros dos derivan de este. El desarrollo de Debian se fundamenta en dos pilares: estabilidad y seguridad. Cada actualización y nuevo paquete conlleva un trabajo muy exhaustivo de testeo, un profundo escrutinio de su código en busca de fallos. Esto nos garantiza una enorme estabilidad, pero ralentiza varios meses la llegada de actualizaciones y paquetes, lo que puede ser muy coñazo para el usuario doméstico, que tal vez se encuentre con problemas varios de drivers. He conocido a ingenieros que han acabado desquiciados por problemas de drivers con Debian en sus portátiles. Debian es un gran sistema operativo, pero no es precisamente fácil de instalar y configurar, y es más recomendable para usuarios con una buena base de conocimientos y para su uso en cuestiones profesionales y laborales.

    Debian, la madre
    Debian
  • Ubuntu: Un sistema radicalmente opuesto a Debian en muchos puntos, a pesar de derivar de él, por tener una filosofía muy distinta. Canonical pretende ser la Apple del software libre, por lo que Shuttleworth decidió que Ubuntu tendría que ser el Linux más bonito, más fácil de instalar y más fácil de utilizar. Y ciertamente Ubuntu con el escritorio Unity es muy fácil de usar. Lo instalas prácticamente a base de pulsar «aceptar» en varios pantallas e incluso puedes instalarlo desde Windows como si fuera un programa. Tienes un centro de software del que descargar todo tipo de programas y juegos recomendados por Canonical, algunos de pago y otros de gratis, sin contar con el caramelito de que Valve haya sacado Steam para Ubuntu. Obviamente todo esto trae consigo algunos problemas, como la inclusión a traición de publicidad en tus búsquedas, la inclusión de drivers privativos en el sistema operativo o el exagerado consumo de recursos que el escritorio Unity le va a provocar a tu equipo. En resumen, un Linux ideal para gente con pocos conocimientos de informática, que valore la comodidad por encima de todo, o para gente que nunca haya usado Linux.

    Logotipo de Ubuntu
    Ubuntu
  • Linux Mint: El más joven de los tres y el que más rápido ha escalado en niveles de popularidad. Existen dos versiones de Mint, la basada en Ubuntu (el Linux Mint normal) y la basada en Debian. En este caso nos centraremos en la versión basada en Ubuntu porque es con la que he trabajado. Mint nos da el justo medio entre la sencillez de Ubuntu y la estabilidad de Debian. Es muy fácil de instalar, tanto como Ubuntu o más, y es más estable que Ubuntu (claro que esto es lógico, ya que al ser una distribución basada en Ubuntu aprovechan para parchear todos los errores de la distribución en la que se basan). Además, su escritorio basado en GNOME es mucho más ligero que Unity, no tiene tanto driver privativo de por medio y es compatible con los binarios de Ubuntu. A día de hoy, para mi, es el ganador de la comparativa, al menos para el desarrollador y el usuario con un conocimiento medio.
    Logotipo de Linux Mint
    Linux Mint

     

En fin, con esto termino la comparativa entre los tres. Tres sistemas opeativos libres, totalmente funcionales. He de puntualizar también que me he basado en las últimas versiones a día de hoy y trabajando con sus escritorios por defecto, ya que a cualquiera de ellas le puedes incorporar otros como XCFE, LXDE, KDE… en fin, eso ya es cuestión de gustos.