Ejecutar comandos de terminal desde AppleScript con permisos de administrador

En artículos anteriores hemos visto cómo ejecutar comandos del terminal desde un script de AppleScript gracias al comando do shell script. Pero puede que necesitemos ejecutar un comando de terminal con permisos de administrador.

Desde AppleScript podemos usar el comando do shell script indicando que se requiere la contrase&ntidle;a de administrador para ejecutar el programa. Esto lo podemos hacer incluyendo en la llamada do shell script los atributos with administrator privileges para indicar que el comando a ejecutar requiere la contraseña de administrador.

Su sintaxis es la siguiente:


do shell script "sudo comando a ejecutar" with administrator privileges

Hacer el mantenimiento de nuestro Mac gracias a AppleScript

Como ejemplo para este artículo vamos a crear un simple script que ejecute los scripts de mantenimiento diario, semanal y mensual para nuestro Mac.

El comando de terminal a ejecutar es:


periodic daily weekly monthly

Este comando se debe ejecutar con permisos de administrador por lo que es un candidato idóneo para nuestro ejemplo.

Nuestro script quedaría así:


on run
try
do shell script "sudo periodic daily weekly monthly" with administrator privileges
do shell script "afplay /System/Library/Sounds/Glass.aiff"
display alert "Proceso de mantenimiento realizado."
on error
do shell script "afplay /System/Library/Sounds/Basso.aiff"
display alert "Error al intentar inicializar el mantenimiento de este Mac."
end try
end run

Recoger información desde el teclado desde un script en Swift en MacOS

Ya hemos visto en un artículo anterior cómo ejecutar un script en Swift. Pero no podemos alcanzar la máxima potencia de un script lanzado desde la terminal si no podemos pasarle parámetros.

Desde Swift podemos crear aplicaciones de línea de comandos usando xCode pero también podemos crear un simple script en Swift que recoja los parámetros que el usuario le vaya pasando mientras se ejecuta el script. Para ello podemos ir solicitando al usuario que introduzca texto a través de la terminal de MacOS.

En este artículo veremos un simple script que nos preguntará nuestro nombre para poder mostrar un saludo personalizado.

Creando el fichero de nuestro script

Desde la terminal crearemos el fichero saludame.swift.


echo "" >> saludame.swift

Editando el código de nuestro script

Primero debemos abrir nuestro fichero con un editor de código. Para ello desde la terminal usaremos el comando open.


open saludame.swift

El código para obtener la información introducida por el teclado se consigue con la función readLine(). El código completo de nuestro script sería el siguiente:


print("Introduce tu nombre:")
let nombre = readLine()
print("Hola \(nombre!)")

Ejecutando nuestro script

Desde la terminal debemos ejecutar el comando swift indicando el nombre de nuestro fichero de código.


swift saludame.swift

Al ejecutar el comando en la terminal nos pedirá nuestro nombre y tras introducirlo y pulsar la tecla Enter nos mostrará un mensaje de saludo con nuestro nombre.

Ejecutar scripts de Swift desde la terminal de MacOS

El lenguaje de programación Swift, creado por Apple, cada vez tiene más presencia en todas partes. Ahora incluso podemos ejecutar ficheros de código Swift desde la consola del sistema MacOS.

En este artículo realizaremos un pequeño ejemplo de script en Swift y lo ejecutaremos desde la consola. El script mostrará un texto de saludo en la consola.

Creando el fichero para nuestro script

En nuestra carpeta de trabajo crearemos un fichero llamado saludo.swift. Esto lo podemos hacer desde la propia terminal de MacOS.

En la terminal escribe el comando siguiente:


echo "" >> saludo.swift

Editando nuestro script

Para abrir el fichero en xCode y editar su código podemos usar xCode o la aplicación que el sistema operativo vea más apropiada. Para ello desde el terminal usaremos el comando open. Escribiremos en la terminal el siguiente comando:


open saludo.swift

Una vez abierto el entorno de xCode deberemos escribir el código para mostrar un texto de saludo por pantalla. El código sería el siguiente:


print("Hola mundo!")

Ejecutando el script en Swift

Una vez guardado el fichero con nuestro código podemos ejecutar el fichero Swift con el comando swift. En la terminal de MacOS debemos ejecutar el siguiente comando:


swift saludo.swift

Ejecutar scripts de AppleScript desde el terminal de MacOS

En determinadas ocasiones quizás nos encontremos con la necesidad de ejecutar un AppleScript desde otra aplicación o servicio. El Terminal de MacOS nos permite realizar multitud de operaciones relacionadas con el sistema operativo de nuestro ordenador y una de ellas es solicitar al int&eeacute;erprete de AppleScript que ejecute un fichero scpt que es la extensión para los ficheros de código de scripts de AppleScript.

Para conseguir que el terminal utilice el intérprete de AppleScript debemos utilizar el comando osascript

Su sintáxis es la siguiente:


osascript rutaAlFicheroDeScript/nombreDelFichero.scpt

Por ejemplo, si queremos ejecutar el fichero miScript.scpt que está en la carpeta de descargas de nuestro usuario el comando sería:


osascript /Users/miUsuario/Downloads/miScript.scpt

Cómo reproducir un sonido en AppleScript utilizando comandos de Terminal

Con AppleScript, al igual que vimos en el artículo de Cómo reproducir un sonido al iniciar sesión en OSX podemos ejecutar comandos del terminal de forma sencilla para realizar operaciones.

En este artículo vamos a seguir con el ejemplo que seguimos con Automator y vamos a reproducir un sonido utilizando el comando de terminal afplay.

En AppleScript para ejecutar una orden en el terminal debemos utilizar la orden do shell script seguida de una cadena de texto entre dobles comillas (").

En AppleScript el ejemplo que hicimos con Automator quedaría así:


on run
do shell script "afplay /System/Library/Sounds/Blow.aiff"

A diferencia de Automator en este caso conseguimos el mismo efecto de forma más sencilla y con menos trabajo. Pero AppleScript no es siempre más sencillo de utilizar que Automator. Es más, desde Automator podemos ejecutar diversos scripts de AppleScript para realizar flujos de trabajo más complejos. Debemos decidir en cada caso qué opción es la más apropiada dependiendo qué función queremos crear.

Lee imágenes desde tu Mac con Tesseract de forma fácil y gratuita

A veces necesitamos manipular o acceder a la información escrita de una imagen o documento con imágenes incrustadas, esto es muy habitual por ejemplo para las personas ciegas o con baja visión. Para estas tareas se suele utilizar una herramienta software de reconocimiento óptico de caracteres o las siglas en inglés OCR.

Estas aplicaciones de OCR han sido, hasta hace poco, bastante caras de precio pero en la actualidad, y gracias al movimiento de software libre, disponemos de buenas alternativas libres y gratuitas. El ejemplo más conocido es Tesseract.

Este motor OCR fue originariamente desarrollado por Hewlett Packard para ser un software de pago, tras 10 años de explotación fue donado como código abierto a la comunidad. Actualmente Google se encarga de su mantenimiento y su nivel de precisión y soporte de varios idiomas lo convierten en una buena opción para competir con otros motores OCR de pago.

MacOS X, el sistema operativo de Apple para sus ordenadores de sobremesa y portátiles, dispone de una versión de Tesseract dentro de la comunidad de desarrollo. Esta versión puede ayudarnos en muchos momentos a acceder al contenido textual de una imagen o recurso visual de forma rápida y gratuita.

Instalación de Tesseract

Tesseract se distribuye de forma abierta con su código fuente por lo que cualquiera puede visitar la página web del proyecto Tesseract y bajar su código fuente y compilarlo en su máquina utilizando las diversas herramientas de desarrollo. Cuando hay herramientas de desarrollo involucradas en una tarea muchos usuarios piensan que va a ser algo imposible, no es del todo así en todos los casos.

Herramientas para desarrolladores que ayudan a todo el mundo

Las herramientas para desarrolladores, utilizadas de forma apropiada, pueden ayudar a cualquiera. Al igual que un cuchillo puede ser utilizado para defensa también nos puede ayudar a cortar el pan o una cuerda, sólo debemos preocuparnos por aprender a utilizarlo de forma apropiada y responsable.

La instalación de Tesseract puede ser muy compleja a menos que hagamos uso de una de estas herramientas para desarrolladores, hablamos de Homebrew. Brew o Homebrew es un gestor de paquetes que permite instalar rápidamente librerías y utilidades en MacOS X. La mayoría de estas utilidades y librerías están relacionadas con tareas de desarrollo pero otras son utilidades del sistema para el usuario, como es el caso de Tesseract.

La instalación de Homebrew y Tesseract se realizará a través del terminal.

Para instalar Homebrew simplemente abre el terminal, localizado en la carpeta Utilidades que está dentro de la carpeta de Aplicaciones.

Una vez abierta la ventana del terminal escribe la siguiente línea de comandos:


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Una vez instalado Homebrew podemos comprobar si se ha instalado correctamente. Para ello escribimos en el terminal el siguiente comando:

brew --version

Atención: los comandos del terminal son sensibles a mayúsculas y minúsculas por lo que hay que tener cuidado en cómo se escribe cada comando.

Instalación rápida de Tesserac

Una vez instalado Homebrew en nuestro equipo podemos instalar Tesseract con soporte para más de 30 idiomas con un simple comando de terminal:

brew install tesseract --with-all-languages

Instalando todos los lenguajes nos aseguramos que tendremos un soporte completo para nuestro idioma.

Utilizando Tesseract desde la consola de comandos

Usar Tesseract desde la línea de comandos es tan sencillo como llamarlo indicando el fichero de imagen y el nombre del fichero donde queremos que guarde el resultado. Un ejemplo:

tesseract $HOME/Desktop/captura.png $HOME/Desktop/resultado

El anterior ejemplo utilizará el fichero de imagen captura.png, que puede ser una captura de pantalla guardada en nuestro escritorio, y guardará el resultado del proceso OCR en el fichero resultado.txt que se guardará en el escritorio. El problema de este comando es que intentará realizar el proceso primero en inglés. Podemos indicar el idioma simplemente con el parámetro -l. El ejemplo quedaría así si queremos realizar el proceso de OCR para el idioma español:

tesseract $HOME/Desktop/captura.png $HOME/Desktop/resultado -l spa

Desinstalar Tesseract

Si por alguna razón no queremos seguir teniendo a Tesseract el comando es tan simple como:

brew uninstall tesseract

Cómo reproducir un sonido al iniciar sesión en OSX

Aunque el sistema operativo OSX posee muchas características de accesibilidad y usabilidad hay que reconocer que el número de eventos del sistema asociados a un sonido es insuficiente.

Por suerte para sus usuarios existen herramientas y aplicaciones para solucionar total o parcialmente este problema.

Sonido al iniciar la sesión

Uno de los eventos de sonido más reconocidos en el sistema operativo Windows de Microsoft es el inicio de sesión. Es habitual escuchar una fanfarria notificando que la sesión del usuario se ha abierto.

Detectar cuando sucede este evento es sencillo. Podemos lanzar una aplicación cuando el sistema operativo arranque. Para ello las preferencias del sistema posee un apartado en la que se indican qué aplicaciones se arrancarán con la sesión del usuario.

Crear aplicaciones con Automator no es demasiado complicado.

Al abrir Automator y pulsar el botón de nuevo documento debemos seleccionar aplicación como tipo de documento .

Al abrirse la interfaz de Automator nos aparece una acción ya creada con el texto Una aplicación recibe archivos y carpetas como datos de entrada. Debemos ignorar esto ya que la entrada de datos en nuestra aplicación para reproducir un sonido será ignorada.

Reproduciendo un sonido desde la terminal de OSX

Para que nuestra aplicación creada con Automator reproduzca un sonido utilizaremos un comando de la terminal de OSX que tiene esta funcionalidad. Es el comando afplay. Este comando puede reproducir sonidos en diversos formatos como AIFF, CAF o WAV.

Para poder utilizar un comando de la terminal en Automator debemos incluir una acción de tipo Ejecutar el script Shell que se encuentra dentro de la categoría utilidades de la biblioteca de acciones de Automator. Debemos añadir esta acción a nuestro flujo de aplicación de Automator, para ello debemos arrastrar el elemento Ejecutar el script Shell a la zona de acciones del flujo de trabajo (donde aparece el texto Una aplicación recibe archivos y carpetas como datos de entrada). Los usuarios de VoiceOver deben usar las funciones de arrastrar y soltar que incorpora este lector de pantallas.

Una vez que tengamos la acción añadida a nuestro flujo de Automator debemos introducir nuestro código del script para reproducir un sonido. Esto lo haremos dentro del cuadro de edición en el que por defecto viene el código cat. Debemos sustituir todo ese código por el nuestro.

Para nuestro ejemplo vamos a reproducir un sonido propio del sistema operativo. Será el fichero Blow.aiff que está en la carpeta /System/Library/Sounds/. El código sería el siguiente:

afplay /System/Library/Sounds/Blow.aiff

Una vez hecho esto podemos probar que nuestra aplicación funciona, para ello sólo debemos ejecutar nuestro flujo de trabajo desde el propio Automator utilizando la opción que se encuentra en el menú Flujo de trabajo. Nos saldrá una alerta indicando que Automator requiere acceso a los parámetros del Finder, podemos ignorar la advertencia ya que cuando demos a guardar nuestra aplicación no habrá ningún problema.

Guardamos nuestra aplicación en la carpeta de aplicaciones con el nombre que decidamos.

Ejecutando nuestra aplicación al inicio de la sesión

Con nuestra aplicación lista en la carpeta de aplicaciones ahora debemos hacer que se ejecute cada vez que el sistema se inicie. Para ello debemos ir a las Preferencias del sistema y en el panel de usuarios y grupos debemos seleccionar nuestro usuario y pulsar la pestaña items de inicio. Nos aparecerá una tabla con las aplicaciones que se abren al iniciar la sesión del usuario seleccionado y un par de botones para añadir o eliminar items de inicio.

Una vez añadida nuestra aplicación podemos cerrar las preferencias del sistema y reiniciar nuestro equipo para probar que se reproduce el sonido correctamente.

Puedes descargar el ejemplo de Sonido de inicio en formato Zip para probar y seguir el ejemplo.