2015-04-15 4 views
0

Мне нужно отправить скрипт Ruby из Linux-ящика на удаленный Mac Mini, чтобы открыть и закрыть приложение.Отправьте скрипт Ruby из окна linux на удаленный mac mini, чтобы открыть и закрыть приложение.

Я не слишком хорошо знаком с Ruby, в основном AppleScript. Есть ли способ внедрить мой AppleScript в скрипт Ruby? Или есть способ использовать только Ruby?

Вот AppleScript я хочу отправить:

cat osascript -e 'tell application "Finder" of machine "eppc://USERNAME:[email protected]" open file "Macintosh HD:Applications:Kodi" end tell' 
+0

Вы хотите использовать Ruby для отправки команды? Что вы пробовали? Есть много способов переместить сценарий на другой компьютер, а затем запустить его, поэтому нам нужно знать, какие протоколы у вас есть, например FTP, SFTP, SSH и т. Д., Поскольку они определяют, как вы перемещаете файл и выполнить его. Так же есть много неизвестных, и это займет книгу, чтобы охватить возможности сделать этот вопрос слишком широким. –

+0

Я еще ничего не пробовал. Я пытаюсь собрать немного больше информации, поэтому я знаю, что поступаю правильно.Как я уже сказал, я не знаком с скриптами вне applescript. Это то, что я получил от компании, которую приобрел ящик Linux через «sclibridge - это программа командной строки на хосте, используемая для взаимодействия с системой управления Savant для расширенной настройки». – David

+0

Извините за недостаток информации. Я новичок. SSH, я считаю, протокол, который они используют. Все остальное, что они мне рассказали о добавлении скриптов в систему, было использование SSH. – David

ответ

0

Я нашел скрипт ниже на "Calling Applescript from Ruby."

def osascript(script) 
    system 'osascript', *script.split(/\n/).map { |line| ['-e', line] }.flatten 
end 
+1

Не говорите «здесь». Вместо этого дайте людям некоторую информацию о том, куда они приземлятся, если они нажмут на ссылку. Это более мягкий и мягкий способ использования гипертекста. –

0

Вопрос ОП очень плохо сформулирован. С небольшим поиском в Интернете:

Savant - это система домашней автоматизации, размещенная на OS X. К сожалению, на сайте все флеш и нет вещества, поэтому я отказался от поиска документации там.

scli - это программа дистанционного управления на основе командной строки, используемая для управления сетевыми устройствами, такими как маршрутизаторы (и, предположительно, безгонный Mac Mini, работающий на сервере Savant) через SNMP. Предположительно sclibridge - это специфическая для вендора реализация; это не общий термин.

scli[bridge] Используется для управления Savant напрямую, неясно, но я предполагаю, что, вероятно, нет: для него это похоже немного низкоуровневое и универсальное, поэтому может быть просто для управления самим Mac. Вполне возможно, что он включает в себя возможность отправки команд оболочки на удаленную машину, избегая необходимости прыгать между scli и ssh все время, но я не стал подробно читать.

Достаточно то, как OP оттуда пытался запустить рубиновые скрипты. Я не знаю, и почему их примерный код хочет поговорить со своим Mac через Remote Apple Events, которые недоступны в Linux. Я подозреваю, что это путаница во многом из-за паршивых документов поставщиков.

Во всяком случае, при условии, что они могут использовать scli или ssh для запуска удаленного * команды Никса, проще всего был бы добавить кучу исполняемого AppleScripts на Mac, который коробок Linux может затем дистанционно выполнять так же, как это было бы любую другую команду оболочки. например Сохраните следующее в виде простого текста (Неоткомпилированная AppleScript) файл с именем kodi-remote:

#!/usr/bin/osascript 

on run argv 
    -- argv : list of string -- any arguments to `kodi-remote` command 

    if argv is {} or item 1 of argv is "help" then 
     log "Usage: kodi-remote [ run | quit | help ]" 
     return 
    end if 

    set cmd to item 1 of argv 
    if cmd is "run" then 
     tell application "Kodi" to run 
    else if cmd is "quit" then 
     tell application "Kodi" to quit 
    else 
     error "Unknown command: " & cmd number 1 
    end if 
end run 

Используйте chmod +x kodi-remote, чтобы сделать его исполняемым и поставить его где-то, что удаленная оболочка может ее найти (например /usr/local/bin).

Вы можете проверить его на месте, открыв новое окно в Terminal.app и работает:

kodi-remote run 
kodi-remote quit 

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

 Смежные вопросы

  • Нет связанных вопросов^_^