2015-04-15 131 views
0

我需要从一个Linux机器发送一个Ruby脚本到远程的Mac Mini打开和关闭应用程序。发送Ruby脚本到远程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

我还没有尝试过任何东西。我试图收集更多的信息,所以我知道我做的是正确的事情。正如我所说,我不熟悉任何脚本以外的脚本。这是我从我购买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

OP的问题很糟糕。从位网络搜索的:

莎凡特是对OS X的托管不幸的是,家庭自动化系统,该网站是所有的闪存,并没有实质内容,所以我放弃了寻找文档存在。

scli是一个基于命令行的远程管理程序,用于通过SNMP控制网络设备,如路由器(以及大概是运行Savant服务器的无头Mac Mini)。据推测,sclibridge是供应商特定的实现;这不是一个常用术语。

是否使用scli[bridge]直接控制Savant尚不清楚,但我猜测可能不是:它似乎有点低级和通用目的,所以可能只是为了管理Mac本身。很可能它包含一个向远程机器发送shell命令的选项,从而避免了在所有的时间内跳过sclissh,但我没有仔细阅读详细信息。

的OP很是怎么从那里想运行Ruby脚本,我不知道,也不知道为什么他们的示例代码想通过远程Apple事件,这是不能用于Linux谈他们的Mac。我怀疑这很混乱,很大程度上是由于糟糕的供应商文档。

无论如何,假设他们可以使用sclissh运行远程* nix命令,最简单的事情就是将一堆可执行的AppleScript添加到Mac,然后Linux框可以远程执行,就像它一样任何其他shell命令。例如将以下保存为纯文本(未编译的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使其可执行文件,并把它放在某处远程shell可以找到它(例如/usr/local/bin)。

您可以通过在Terminal.app打开一个新的窗口,在本地运行测试:然后

kodi-remote run 
kodi-remote quit 

相同的命令应该在任何你使用在Linux中运行远程shell命令工作。

相关问题