Shelley:MacOS菜单栏应用程序,可根据授权的HTTP请求运行shell脚本

2020-08-29 04:47:59

这一切都始于周二下午,一位读者在一篇旧博客文章中评论说,他们正在使用NFC贴纸在iPhone上启动快捷方式。

我无法解释我的大脑是如何或为什么会这样跳跃的,但它立刻将这个想法与布雷特·特普斯特拉(Brett Terpstra)的“奇妙的捆绑”(Fantastic Bunch.app)联系在一起。我已经使用他的应用程序好几个月了,可以自动一次打开一堆应用程序。比如当我到达工作地点或进行其他上下文切换时。

现在,我用键盘快捷键触发这些串,但没有其他原因,如果...";我想知道我是否可以用NFC敲击来做同样的事情,这可能会很酷。

更广泛地说:我想知道我是否可以从我的手机自动执行Mac上的操作?

你会看到,我在办公桌上的NFC贴纸上轻敲手机,我所有的工作应用程序都会在我的Mac上启动。

要做到这一点,我需要找到一种方法来从iOS快捷方式触发我的Mac。

我让这个解决方案在这种情况下起作用,但iCloud Drive的实时性往往远不及Dropbox。(Shortcuts.app的要求意味着我需要使用iCloud Drive。)。因此,虽然它在技术上是有效的,但它是缓慢的和不可预测的。在我打开手机上的Files.app之前,NFC TAP和我的Mac之间的反应延迟从3秒到10秒不等,甚至永远不会。

所以,我需要一个更快的解决方案。一种直接从我的手机(或任何其他设备?)发送命令的方法。给我的Mac。

我想出了一个很小的MacOS菜单栏应用程序,我叫它雪莱--因为正如一位朋友告诉我的那样,它是一个黑客中的弗兰肯斯坦(Frankenstein)。

将Shelley指向Mac上包含可执行shell脚本的文件夹。然后,它位于您的菜单栏中,监听传入的HTTP请求。当适当的请求与密钥一起到达时,只有您知道,Shelley会查找匹配的shell脚本并运行它。

结果立竿见影,您可以灵活地在Mac上编写基本上任何操作的脚本。启动应用程序,打开URL,甚至运行AppleScripts。

老实说,我还不确定该拿雪莱怎么办。但我记得当年我对黑兹尔、键盘大师,甚至快银都有同样的感觉。

使用MacOS,底层Unix工具与可编写脚本的UI层相结合,意味着您可以自动执行几乎任何操作。

就像上面的自动化应用程序一样,如果有足够的时间和一点想象力,我相信我会想出和雪莱一起做的真正有用的事情。我迫不及待地想听听其他人也有什么想法。

Shelley在端口9876上运行,并侦听格式如下的特定HTTP GET请求:

要执行其中一个脚本,请在另一台计算机、电话或其他设备上的Web浏览器中打开其中一个链接。或者使用您喜欢的脚本工具发送HTTP请求。或者使用iOS快捷方式应用程序。你想要什么都行。

Run的示例将立即执行您的脚本并返回(关闭HTTP连接)。

如果您改为ping WAIT变量,则连接将等待并保持打开状态,直到脚本执行完毕。

将您的shell脚本放在此文件夹中。它们必须标记为可执行(chmod+x script.sh),并以.sh文件扩展名结尾。

然后,如果您想要运行上面的work-morning.sh脚本,您可以ping您的Mac,地址是:

为了在一定程度上保证安全,您还需要提供只有您和雪莱知道的密钥。

Shelley将您的密钥存储在自动添加到脚本文件夹的key.txt文件中。(您可以随意修改它选取的随机值。)。

您可以通过以下两种方式之一在HTTP请求中将该密钥传递给Shelley:

这一切都很棒,但IP地址会改变--特别是如果你瞄准的Mac是无线的。幸运的是,如果您通过局域网连接进行此操作,则不需要您的IP地址,只需要您的Mac Bonjour名称即可。

您会注意到,我正在使用内置的获取URL快捷方式的内容步骤提供的Headers选项传入我的密钥。

然后,添加一个新的快捷键自动化功能,在您点击特定的NFC标签时自动运行您的快捷键,然后轰隆作响。

安妮,就是这样。从任何可以向您的Mac发送HTTP请求的设备上,您都可以启动任何可以由shell脚本启动的东西。