Как я могу «сказать» другому Mac?

19

У меня дома два Mac (iMac и MacBook Pro).

Я хотел бы использовать sayутилиту командной строки, чтобы напечатать что-нибудь на моем MBP и заставить его говорить на iMac, скорее как система внутренней связи.

Кроме того, было бы смешно отправлять сообщения моей жене, когда она использует iMac.

Можно ли это сделать?

cbmeeks
источник
2
Связанный: XKCD 530 xkcd.com/530
Эндрю Гримм

Ответы:

26

Поскольку два Mac находятся в одном доме, я предполагаю, что они оба находятся в одной сети.

Прежде всего, вам нужно активировать Remote Loginна Mac, где вы хотите, чтобы звук вышел.

Перейти System Preferences > Sharingи проверить Remote Loginфлажок. Затем, используя компьютер, откройте терминал и введите этот

ssh <user>@<computer name.local>

Где <user>ваша жена, логин и <computer name>имя другого компьютера.

Теперь, как будто у вас открыт терминал на компьютере вашей жены, и вы можете sayделать все, что захотите.

Лоик Вольф
источник
это говорит, что Событие не найдено
cbmeeks
@cbmeeks когда? Какую последнюю команду вы сделали?
Лоик Вольф
ничего. Я сделал это неправильно. прекрасно работает! LOL спасибо
cbmeeks
2
Я делал это раньше, когда кодировал вместе с другом, отличный ответ!
Моше
2
Вы можете объединить команды в одну строку:ssh user@hostname 'say hello'
willWorkForCookies
20

В дополнение к использованию sshдля запуска команд на удаленном хосте, вы можете использовать Remote Apple Events, которые также имеют sayкоманды, а также другие, которые могут быть вам полезны, например display alert.

На целевой машине включите:

Системные настройки> Общий доступ> Удаленные события Apple

Затем с вашего компьютера запустите следующий скрипт (в редакторе AppleScript или через osascriptтерминал):

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

Он попросит вас подтвердить подлинность, когда вы скомпилируете или запустите это. Если вы сделаете это в AppleScript Editor, он будет помнить аутентификацию, пока вы оставляете AppleScript Editor открытым, поэтому вам не придется проходить аутентификацию каждый раз, когда вы запускаете это. (В диалоге аутентификации также есть возможность сохранить свои учетные данные в связке ключей, чтобы избежать многократного проникновения.)

Вы можете сделать это из командной строки в терминале с помощью:

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

Как отобразить сообщение на удаленной машине

Вы также можете отобразить сообщение, sshвыполнив вход на удаленный компьютер с помощью † и выполнив эту команду в удаленной оболочке (для этого не используются удаленные события Apple, просто для удаленного входа в систему ssh):

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

Команда sayзапускает речь асинхронно, а затем выводит системные события на передний план для отображения сообщения во время воспроизведения речи.

† Команды, отображающие пользовательский интерфейс, такие как display alertи display dialog, не разрешены через удаленные события Apple. Чтобы отправить их процессу на удаленной машине, сначала нужно пройти ssh.

Крис Пейдж
источник
1

Как вариант, ничто не мешает вам использовать Remote Desktop или Screen Sharing, встроенный в OSX, и просто войти в систему как обычный пользователь, пропуская терминал.

Тогда вы можете сказать, как обычно. Или есть много приложений, которые делают текст в речь.

Alex
источник