¿Cómo puedo "decir" a otra Mac?

Tengo dos Mac en nuestra casa (iMac y MacBook Pro).

Me gustaría usar la sayutilidad 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?

Relacionado: XKCD 530 xkcd.com/530

Respuestas (3)

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 Loginen la Mac donde desea que salga el sonido.

Vaya a System Preferences > Sharingy marque la Remote Logincasilla 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 saylo que quieras.

dice Evento no encontrado
@cbmeeks ¿cuándo? cual es el ultimo comando que hiciste?
no importa. lo hice mal ¡Funciona genial! lol gracias
He hecho esto antes, cuando codifico junto con un amigo, ¡excelente respuesta!
Puede combinar los comandos en una sola línea:ssh user@hostname 'say hello'
¡Esto es genial! ¡Funciona perfectamente y no puedo esperar para asustar a mis hijos mientras miran videos de Minecraft! :)

Además de usar sshpara ejecutar comandos en el host remoto, puede usar Remote Apple Events, que también tienen un saycomando, 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 osascriptde 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 saycomando 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 alerty 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.