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

19

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, más bien como un sistema de intercomunicación.

Además, podría ser divertido enviarle mensajes a mi esposa mientras está usando el iMac.

Se puede hacer esto?

cbmeeks
fuente
2
Relacionado: XKCD 530 xkcd.com/530
Andrew Grimm

Respuestas:

26

Como las dos Mac están en la misma casa, supongo que ambas están en la misma red.

En primer lugar, debe activar Remote Loginen la Mac donde desea que salga el sonido.

Ve System Preferences > Sharingy marca 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 tuviera una Terminal abierta en la computadora de su esposa y pueda hacer saylo que quiera.

Loïc Wolff
fuente
dice Evento no encontrado
cbmeeks
@cbmeeks cuando? ¿Cuál fue el último comando que hiciste?
Loïc Wolff
no importa. Lo hice mal ¡Funciona genial! lol gracias
cbmeeks
2
He hecho esto antes, cuando codifico junto a un amigo, ¡gran respuesta!
Moshe
2
Puede combinar los comandos en una sola línea:ssh user@hostname 'say hello'
willWorkForCookies
20

Además de usar sshpara ejecutar comandos en el host remoto, puede usar Remote Apple Events, que también tiene 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 AppleScript Editor, o vía osascriptTerminal):

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 AppleScript Editor, recordará la autenticación siempre que deje abierto AppleScript Editor, por lo que no tendrá que autenticarse cada vez que ejecute esto. (El cuadro de diálogo de autenticación también tiene una opción para guardar sus credenciales en el llavero para evitar ser molestado repetidamente).

Puede hacerlo desde la línea de comandos en la 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 para 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 asincrónica, luego esto lleva los 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 Apple Remote Events. Para enviarlos a un proceso en una máquina remota, primero debe pasar ssh.

Chris Page
fuente
1

Alternativamente, otra vez, nada le impide usar Escritorio remoto o Compartir pantalla, que está integrado en OSX, e iniciar sesión como usuario normal, omitiendo el terminal.

Entonces puedes usar decir normalmente. O hay muchas aplicaciones que hacen texto a voz.

Alex
fuente