如何从 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用命令行工具为 Mac OS X 创建漂亮的 DMG?
用于压缩具有特定名称的所有子文件夹的 Mac OS X 命令或脚本