Archivo de la etiqueta: command line

Herramientas Útiles

Me gustaría hablar de dos herramientas muy útiles en el día a día, que pese a su sencillez no por ello dejan de ser útiles.
Una de ellas de un emulador de terminal llamado cmder. Si bien Carlos habló en este post de otro llamado ConEmu, esta otra alternativa también resulta bastante interesante.
La otra herramienta se llama PingInfoView, y su cometido es el de realizar un ping a las máquinas que establezcamos, con lo cual se sabrá en todo momento si éstas están en línea o no.

cmder

Como se ha dicho, el cmder es un emulador de consola, lo que significa que actúa a modo de intermediario con el intérprete. Esto vendría a decir que se puede personalizar y adecuar más a las necesidades y gustos del usuario (siempre dentro de un límite). La configuración es bastante completa, permitiendo alterar diversos aspectos, desde el grado de opacidad, el tipo de fuente a emplear, pasando por la integración de diversas aplicaciones en las múltiples pestañas que se pueden desplegar, etc.
Sin duda, el grado de configruación es lo que le confiere potencia y versatilidad a este emulador de consola, si bien al principio puede resultar algo engorroso debido a la cantidad de opciones.

2016-06-19 20_34_57-Cmder

PingInfoView

Esta aplicación nos permite realizar ping a una serie de máquinas establecidas en una lista a introducir de forma manual o bien desde un archivo externo. El programa permite establecer alarmas visuales y sonoras en el caso de fallos, así como exportar informes en HTML, establecer la frecuencia de los pings, etc.

2016-06-19 20_32_00-PingInfoView

Un programa sencillo pero que cumple su cometido a la perfección.

Transferencia de datos utilizando Azcopy y Azure CLI

Una operación bastante común en la gestión de una cuenta de almacenamiento o Storage account en Azure es la copia de datos (se trate de un blob, fichero, etc) ya sea entre una cuenta y otra , o bien carga / descarga en local a Azure.
Estas operaciones pueden llevarse a cabo de diferentes maneras, pero aquí voy a centrarme en dos de ellas: AzCopy y Azure CLI. Decir que para los ejemplos sobre este último, se va a emplear el modo ARM, el cual se activa con:

Hay que resaltar que AzCopy resulta mucho más versátil y potente que Azure CLI, lo cual es lógico ya que es una herramienta creada específicamente para este fin, con lo cual contempla más situaciones y cuenta con más parámetros, permitiendo así una configuración mas específica. No obstante, AzCopy solo está disponible para Windows, mientras que Azure CLI es multiplataforma.

Sintaxis básica

Tanto AzCopy como Azure CLI pueden llevar a cabo la copia de blobs y ficheros.
Así, para subir un fichero a un blob y descargar todos los archivos de un blob de un container en Azure CLI en local:

Las opciones disponibles se pueden consultar acudiendo a la ayuda de Azure CLI:

Ayuda storage download Azure CLI

Por su parte, en AzCopy, para la descarga, se admiten más combinaciones más allá de la única descarga de un blob:

Y para la carga de archivos:

Respecto a la copia de blobs entre cuentas, en Azure CLI:

En AzCopy, esta misma operación puede realizarse de forma síncrona (se descarga una copia en local y esta se sube) o asíncrona (por defecto):

Llegados a este punto, a pesar de que Azure CLI también soporta la copia de archivos, al igual que AzCopy, sin embargo, este último también contempla además, otras características, por ejemplo, entre otras:

  • Importación / exportación de tablas en formato CSV o JSON.
  • Uso de un archivo de respuesta: en dicho archivo se permite especificar los parámetros al comando AzCopy, de modo que este los procesa como si hubieran indicado directamente:
  • Carpeta de archivo de diario: esta interesante funcionalidad permite reanudar operaciones inconclusas si detecta la existencia de este archivo.
  • Posibilidad de especificar el número de operaciones simultáneas a iniciar: por defecto, solo se puede llevar a cabo una operación en un mismo equipo. Esto es así para optimizar el uso de los recursos. Para realizar más de una simultáneamente, se emplearía el parámetro ‘/NC’

Conclusiones

Como se dijo al principio, AzCopy es mucho más versátil y potente a la hora de realizar copias. No hay que olvidar que el alcance de Azure CLI es la gestión de los recursos. Aún así, es perfectamente válida para las operaciones de copia habituales debido a su sencillez.

Mantén tu Azure PowerShell al día con PowerShell Get

Probablemente mientras estoy escribiendo estas líneas, un nuevo servicio o característica está apareciendo en Azure. Para mantenernos a la par con este ritmo tan frenético de evolución necesitamos tener las herramientas con las que operamos en Azure igualmente actualizadas. Mi compañero Manuel Marín dedica la mayoría de sus publicaciones a las herramientas de línea de comandos multiplataforma, disponibles para Windows, OSX y GNU/Linux; mientras que servidor se centra en PowerShell. Actualmente las herramientas de Azure para PowerShell se pueden instalar de dos formas:

  • Mediante Web Platform Installer, WebPI para los amigos. Se trata de una herramienta que nos permite instalar automáticamente componentes, en su gran mayoría para uso con IIS. En ocasiones encontramos paquetes individuales no relacionados necesariamente con el mundo web, como es el caso de las herramientas de administración de Azure a través de PowerShell. Esta forma de instalación es realmente intuitiva, amena y se hace mediante interfaz gráfica.
  • Desde la Galería de PowerShell, usando PowerShell Get. Esta forma de instalación es también trivial e incluso más rápida que la basada en WebPI, pero se realiza a través de línea de comandos desde la propia PowerShell. Nos vamos a centrar en este método, ya que es mucho más sencillo de mantener al día.

Dado que nos vamos a centrar en el método de la Galería de PowerShell, conviene no mezclar ambos métodos de instalación. Así que en el caso de que hayamos instalado las herramientas mediante WebPI, las desinstalaremos convenientemente desde Programs and Features. Una vez desinstalado procedemos con PowerShell.

La Galería de PowerShell

La Galería de PowerShell no es ni más ni menos que un repositorio central de scripts y módulos de PowerShell, disponibles para descargarse al estilo apt-get desde nuestra línea de comandos. Para poder descargar estos elementos, se vale a su vez de un módulo llamado PowerShellGet. ¿Cómo lo obtenemos? Dependerá de nuestra versión de Windows:

  • Windows 10 / Windows Server 2016. No es necesario hacer nada, ya tienes todo lo necesario.
  • Windows 7 SP1 / Windows Server 2008 R2 SP1 , Windows 8.1 / Windows Server 2012 (R2). Hay dos opciones:

image

Instalando los módulos de Azure

Teniendo ya nuestro PowerShellGet preparado –recuerda que si estás en Windows 10, ¡no tenías que hacer nada!-, instalar las herramientas de Azure es completamente trivial. Basta con ejecutar este script como administrador del sistema:

Esto nos debería dar una salida por pantalla pantalla similar a la siguiente:

image

¿Hecho? Empezar a trabajar con Azure desde PowerShell será tan sencillo como:

Actualizando o desinstalando módulos

Y esto es lo mejor, ya que mantener al día nuestra herramienta se vuelve realmente trivial:

Y la desinstalación:

Sabiendo esto, es incluso posible programar una tarea que vele por que nuestras herramientas se mantengan actualizadas ejecutando los cmdlets necesarios en los momentos adecuados.

¡Happy PowerShell y Azure!

Enlace relacionado: Cómo instalar y configurar Azure PowerShell

Un gran terminal para Windows: ConEmu

Para muchos profesionales de infraestructura, la línea de comandos es una herramienta básica que nos permite en muchas ocasiones interactuar con el sistema más rápido que como lo haríamos con una interfaz gráfica. Además la línea de comandos suele tener capacidades muy potentes como por ejemplo hacer pipe entre distintos programas o scripts de automatización de tareas. Para hablar de la línea de comandos en el mundo UNIX nos solemos referir al Terminal, mientras que en Windows acostumbra a llamarse Símbolo del sistema o bien PowerShell en función de cuál ejecutemos; o bien Consola de forma genérica en ambos mundos. Sin embargo, esta comparación poco afortunada…

Cuando hablamos de una Consola debemos distinguir entre dos elementos distintos que trabajan de forma conjunta:

  • El emulador de terminal o consola. Es el programa que nos proporciona interacción con el intérprete. La ventana que rodea al área de la linea de comandos, así como los distintos elementos y controles de la misma son parte del emulador de terminal o consola.
    • Ejemplos de emuladores de consola (Windows): conhost.exe, ConEmu, cmder
    • Ejemplos de emuladores de terminal (Mac): Terminal, iTerm
    • Ejemplos de emuladores de terminal (Linux): xterm, gTerm, konsole, rxvt, Eterm
  • Intérprete de línea de comandos. En la consola constituye la shell, y es el componente que nos relaciona con la máquina. De ella depende la sintaxis de los comandos que escribimos y las facilidades que se dan al usuario, como el autocompletado con el tabulador, coloreado, historial de comandos, etc…
    • Ejemplos de intérpretes para Windows: cmd.exe, PowerShell, 4NT, command.com
    • Ejemplos de intérpretes para UNIX: bash, zsh, csh

Un desconocido que usamos todos los días: conhost.exe

Centrándonos en Windows, si símplemente ejecutas una nueva ventana de PowerShell o Símbolo del sistema, el emulador que estás utilizando es –sin duda- conhost.exe.

image

Lamentablemente, conhost.exe sufre de la misma historia que Notepad: desde Windows NT 3.1 el programa no ha cambiado prácticamente nada y nos ofrece la mismas capacidades incluso en Windows 8.1, que he decir que son bastante pobres con respecto a los modernos terminales que encontramos en GNU/Linux. Sin embargo, PowerShell volvió a traer el foco a la consola en los entornos Microsoft y en Windows 10 / Windows Server 2016 se han introducido finalmente mejoras, tal y como se aprecia en la nueva ventana de Propiedades:

image

Entre las novedades más destacadas encontramos:

  • Selección de texto línea a línea, en lugar de por bloques como iba siendo hasta Windows 8.1 / 2012 R2.
  • Filtrado al pegar texto en la consola.
  • Redimensionar la consola provoca un reajuste del texto para evitar el scroll horizontal.
  • Se puede cambiar la opacidad de la ventana.

Microsoft da un listado completo de todas las nuevas características aquí.

ConEmu

ConEmu es un emulador de terminal o consola para Windows de código abierto que me ha sorprendido muy gratamente por su cantidad de características, situándose incluso por encima de los terminales más avanzados de UNIX. Un emulador de terminal de estas características constituye el compañero ideal de PowerShell junto con las utilidades que he ido comentado en el blog bajo la serie PowerShell Utilities Series. Es por ello que se ha convertido en mi primera opción como terminal para plataformas Microsoft. ConEmu tiene el siguiente aspecto:

image

¿Qué nos ofrece ConEmu con respecto a la consola tradicional, conhost.exe? Lo más llamativo es:

  • Redimensionado realizando ajuste de línea en el texto para evitar el scroll horizontal.
  • Tabulaciones para poder tener abiertas múltiples consolas en la misma ventana.
  • Integración con ciertas aplicaciones que no son una consola, como PuTTY (a pesar de lo que pudiéramos pensar, PuTTY no es una aplicación de consola) o Notepad.
  • Integración con las Jumplist de Windows 7 en adelante, permitiéndonos ver en la barra de tareas el progreso de la ejecución de una tarea PowerShell.
  • Búsqueda de texto integrada en el terminal.
  • Barra de estado con multitud de elementos de información del sistema.
  • Modo Quake
  • Macros
  • Cambio de opacidad de la ventana.

Se puede ver un listado completo de las características aquí. A continuación se puede otro ejemplo de ConEmu con PuTTY integrado en una pestaña:

image

Así que ya sabéis, si sois amantes de la consola y usuarios de Windows, ConEmu sea seguramente una visita obligada para darle una buena probada. ¡Espero que os resulte muy útil!

Happy command line!