Tengo dos Mac en nuestra casa (iMac y MacBook Pro).
Me gustaría usar la say
utilidad de línea de comandos para escribir algo en mi MBP y hacer que hable en el iMac, como un sistema de intercomunicación.
Además, podría ser divertido enviarle mensajes a mi esposa mientras usa la iMac.
Se puede hacer esto?
Dado que los dos Mac están en la misma casa, supongo que ambos están en la misma red.
En primer lugar, debe activar Remote Login
en la Mac donde desea que salga el sonido.
Vaya a System Preferences > Sharing
y marque la Remote Login
casilla de verificación. Luego, usando su computadora, abra Terminal y escriba esto
ssh <user>@<computer name.local>
¿Dónde <user>
está el inicio de sesión de su esposa y <computer name>
es el nombre de la otra computadora?
Ahora, es como si tuvieras la Terminal abierta en la computadora de tu esposa y puedes hacer say
lo que quieras.
ssh user@hostname 'say hello'
Además de usar ssh
para ejecutar comandos en el host remoto, puede usar Remote Apple Events, que también tienen un say
comando, así como otros que pueden serle útiles, como display alert
.
En la máquina de destino, habilite:
Preferencias del sistema > Compartir > Eventos remotos de Apple
Luego, desde su máquina, ejecute el siguiente script (en el Editor de AppleScript o a través osascript
de la Terminal):
tell application "Finder" of machine "eppc://machine-name.local"
say "Hello"
end tell
Le pedirá que se autentique cuando compile o ejecute esto. Si lo hace en el Editor de AppleScript, recordará la autenticación siempre que deje el Editor de AppleScript abierto, por lo que no tendrá que autenticarse cada vez que lo ejecute. (El cuadro de diálogo de autenticación también tiene una opción para guardar sus credenciales en el llavero para evitar que lo molesten repetidamente).
Puede hacer esto desde la línea de comandos en Terminal con:
osascript -e 'tell application "Finder" of machine "eppc://machine-name.local" to say "Hello"'
Cómo mostrar un mensaje en una máquina remota
También puede mostrar un mensaje iniciando sesión en la máquina remota con ssh
† y ejecutando este comando en el shell remoto (esto no hace uso de Remote Apple Events, solo Remote Login for ssh
):
osascript -e 'say "Hello" without waiting until completion' -e 'tell application "System Events"' -e 'activate' -e 'display alert "Hello!"' -e 'end'
El say
comando inicia el discurso de forma asíncrona, luego esto trae Eventos del sistema al frente para mostrar el mensaje mientras se reproduce el discurso.
† Los comandos que muestran la interfaz de usuario, como display alert
y display dialog
, no están permitidos a través de Remote Apple Events. Para enviarlos a un proceso en una máquina remota, primero debe pasar por ssh
.
Alternativamente, nada le impide usar Escritorio remoto o Compartir pantalla, que está integrado en OSX, y simplemente iniciar sesión como un usuario normal, omitiendo la terminal.
Entonces puedes usar say normalmente. O hay muchas aplicaciones que hacen texto a voz.
andres grimm