Como posso "dizer" para outro Mac?

19

Eu tenho dois Macs em nossa casa (iMac e MacBook Pro).

Gostaria de usar o sayutilitário de linha de comando para digitar algo no meu MBP e fazê-lo falar no iMac, como um sistema de intercomunicação.

Além disso, pode ser hilário enviar mensagens para minha esposa enquanto ela estiver usando o iMac.

Isso pode ser feito?

cbmeeks
fonte
2
Relacionados: XKCD 530 xkcd.com/530
Andrew Grimm

Respostas:

26

Como os dois Mac estão na mesma casa, presumo que ambos estejam na mesma rede.

Primeiro de tudo, você precisa ativar Remote Loginno Mac onde deseja que o som seja emitido.

Vá para System Preferences > Sharinge marque a Remote Logincaixa de seleção. Em seguida, usando o seu computador, abra o Terminal e digite

ssh <user>@<computer name.local>

Onde <user>está o login da sua esposa e <computer name>é o nome do outro computador.

Agora, é como se você estivesse com o Terminal aberto no computador da sua esposa e pudesse sayo que quiser.

Loïc Wolff
fonte
diz Evento não encontrado
cbmeeks
@cbmeeks quando? qual foi o último comando que você fez?
21811 Loïc Wolff
deixa pra lá. Eu fiz errado. funciona bem! lol graças
cbmeeks
2
Eu já fiz isso antes, ao codificar ao lado de um amigo, ótima resposta!
Moshe
2
Você pode combinar os comandos em uma única linha:ssh user@hostname 'say hello'
willWorkForCookies
20

Além de usar sshpara executar comandos no host remoto, você pode usar o Apple Remote Events, que também possui um saycomando, além de outros que podem ser úteis para você, como display alert.

Na máquina de destino, ative:

Preferências do Sistema> Compartilhamento> Eventos Remotos da Apple

Em seguida, na sua máquina, execute o seguinte script (no AppleScript Editor ou osascriptno Terminal):

tell application "Finder" of machine "eppc://machine-name.local"
    say "Hello"
end tell

Ele solicitará que você se autentique quando compilar ou executar isso. Se você fizer isso no AppleScript Editor, ele lembrará a autenticação enquanto você deixar o AppleScript Editor aberto, para que você não precise se autenticar sempre que executar isso. (A caixa de diálogo de autenticação também tem uma opção para salvar suas credenciais no chaveiro para evitar repetidamente incomodar.)

Você pode fazer isso na linha de comando no Terminal com:

osascript -e 'tell application "Finder" of machine "eppc://machine-name.local" to say "Hello"'

Como exibir uma mensagem em uma máquina remota

Você também pode exibir uma mensagem efetuando login na máquina remota com ssh† e executando este comando no shell remoto (isso não utiliza os Eventos Apple Remotos, apenas o Login Remoto para ssh):

osascript -e 'say "Hello" without waiting until completion' -e 'tell application "System Events"' -e 'activate' -e 'display alert "Hello!"' -e 'end'

O saycomando inicia o discurso de forma assíncrona, e isso traz os Eventos do sistema para a frente para exibir a mensagem enquanto o discurso está sendo reproduzido.

† Comandos que exibem interface do usuário, como display alerte display dialog, não são permitidos via Remote Apple Events. Para enviá-los para um processo em uma máquina remota, você deve primeiro prosseguir ssh.

Chris Page
fonte
1

Como alternativa, novamente, nada impede você de usar a Área de Trabalho Remota ou o Compartilhamento de Tela, embutido no OSX, e apenas fazer login como um usuário normal, pulando o terminal.

Então você pode usar o say normalmente. Ou há muitos aplicativos que fazem texto em fala.

Alex
fonte