如何从 Mac OS X 命令行或脚本可靠地响铃我的 iPhone?

Posted

技术标签:

【中文标题】如何从 Mac OS X 命令行或脚本可靠地响铃我的 iPhone?【英文标题】:How to reliably ring my iPhone from Mac OS X command line or script? 【发布时间】:2016-03-14 17:57:36 【问题描述】:

一家初创公司的网站必须在 0/24 运行。数据中心不会在中断时通知我们,即使会通知我们,依赖单个实体也不会感到安全。

这个想法是编写一个脚本来监控网站并在出现任何问题时拨打我的 iPhone。它不一定是呼叫响铃。任何声音都可以。它必须绕过“请勿打扰”模式。

当 iPhone 连接到 Apple ID 时,很容易从 Mac OS X Yosemite 拨打电话或发送短信。然而,让 iPhone 自己响铃,尤其是从命令行响铃似乎不那么简单了。

我希望尽可能避免使用第三方软件(包括 VoiP 提供商),因为更多的层和更多的软件意味着更多的错误。另外,我绝不会将我的 Apple ID 密码泄露给第三方。

到目前为止,几乎没有什么想法。

    找到我的 iPhone。它不仅绕过了请勿打扰模式,还绕过了任何插入的耳机。那太棒了。有没有办法从 Mac 本地执行它或以某种方式通过 Apple 调用它?如果有官方接口,为此编写一个 REST 应用程序不会有问题。我考虑过使用浏览器仿真(Capybara + Webkit)登录到我的 iCloud 帐户并按下“Ring my phone”按钮,但我发现这很脆弱且不可靠。我只是手动尝试,就像在 html5 界面上点击 5 次,Apple 可以随时更改。

    据我所知,Skype 仅在 Linux 和 Windows 上接受命令行参数。如果它仍然存在。否则,它可能是一个解决方案。这是一个 3rd 方软件,但是,我不必提供我的 Apple ID,我认为它可能是可靠的。问题是我根本不喜欢在我的 Mac 上运行 Skype。

    即使能够给自己发送几条短信也聊胜于无。我可以通过 iMessage 和命令行以某种方式做到这一点吗?

我想我更喜欢找到我的 iPhone,因为它发出声音最可靠,但欢迎提出任何想法。

【问题讨论】:

您可以通过编程方式发送短信,是的。有关快速示例,请参阅 this 和 this。不过,可能不适用于自己发送消息。另外,请记住,adding a number to favourites or allowing repeated calls to go through 可以轻松绕过“请勿打扰”。 【参考方案1】:

编写一个脚本,从您的 Mac ping 您的服务器 ip。使用 serverfail 功能将其设置为向您的手机发送电子邮件。包含的示例使用 python 脚本通过 gmail 向您发送消息。只是一个快速工作的例子......

使 serverup.sh 脚本可执行,在您的 Mac 上创建一个 cronjob 来运行该程序,每天一分钟一小时您认为有必要的次数。然后,如果您的服务器出现故障,您将收到通知。 这是2个文件。 serverup.sh 和 serverfail.py

#!/bin/bash

function serverup 
    target=000.000.0.000 #this is your server ip address
   /sbin/ping -c 1 $target > /dev/null  # run the ping command
   if [ $? -eq 0 ]; then     
itsup
else
serverfail

fi 



itsup() 
echo "its up" # or whatever you want this to do


serverfail() 
python ~/Desktop/server_scripts/serverfail.py


serverup

然后您可以从这里编写一个 serverfail.py 脚本,该脚本已放置在桌面上一个名为 server scripts 的文件夹中。

为自己获取一个新的 gmail 帐户,用于发送服务器消息

填写您的新用户名、密码、gmail帐户、发送邮件的电子邮件地址的电子邮件..

这是一个您可以使用的简单 python 脚本。

#!/usr/bin/python

import smtplib

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login("gmail_username", "gmail_passwd")

msg = "Server Down!"
server.sendmail("yourgmail@gmail.com",    "the_email_you_want_to_send_to@email.com", msg)
server.quit()

【讨论】:

不幸的是,这是第 3 方,不可靠。我十分钟前给自己发了一条短信,我还没有收到。 (国际号码,但是,我的提供商被列为“支持的国际运营商”)。此外,SMS 绕过请勿打扰模式并在夜间唤醒我的几率最低。 我更新了我的答案以包含一个 python 脚本和一个 gmail 示例【参考方案2】:

如果您愿意使用Twilio 等服务,您可以通过他们的 API 拨打电话或发送短信,然后从命令行使用该 API。

Place a Twilio Call from the Shell

Send a Twilio SMS from the Shell

但是,我不建议您创建自己的监控/通知解决方案,因为您只是在创建更多可能失败的内容,因此也需要进行监控。最好使用第三方监控解决方案,例如WDT.io。在您的 iPhone 上,为该服务的电子邮件地址创建一个 VIP 联系人。然后您可以在 iPhone 上更改该 VIP 的警报(在设置>通知>我相信的邮件下)。

【讨论】:

以上是关于如何从 Mac OS X 命令行或脚本可靠地响铃我的 iPhone?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 shell 脚本中确定 Mac OS X 版本?

如何使用命令行工具为 Mac OS X 创建漂亮的 DMG?

如何在 Mac OS X 下AA,安装 gcc

用于压缩具有特定名称的所有子文件夹的 Mac OS X 命令或脚本

从命令行使用 clang 编译:兼容性问题 mac os X

如何通过 Mac OS X 上的 Unix 域套接字传递用户凭据?