如何通过电子邮件在 Raspberry Pi 上运行命令

几乎每个 Raspberry Pi 用户都面临这个问题。 你有一个树莓派在家里运行,并想在它上面执行一个命令。 问题是,您在家外,在移动网络上,无法访问您的 Pi。 您可以获得静态 IP 地址,或使用其中一种动态 DNS 服务来启用对家庭网络的访问。 但是,这对大多数人来说太不方便了,而且付出了太多的努力却收效甚微。 此外,它还会让您的 Raspberry Pi 遭受暴力攻击,因为 SSH 端口现在已经公开。

好消息是,有一种更方便、更安全的方法—— 只需通过电子邮件发送您希望在 Raspberry Pi 上运行的命令. 这样,您只需要一个电子邮件客户端和 Pi 上的有效互联网连接。 没有登录,也没有静态IP。 更重要的是,这种方法不仅适用于 Raspberry Pi,而且适用于任何安装了 Bash shell 和 cURL 的 Linux 发行版。 听起来很酷? 这是您需要设置的内容:

要求

  • 具有有效互联网连接的 Raspberry Pi。
  • IFTTT.com 上的帐户。
  • 一个 Dropbox 帐户。

入门

设置 IFTTT 配方

我们将使用 IFTTT 将通过电子邮件发送的命令分发到 Dropbox。 设置 IFTTT 帐户后,您必须使用“通过电子邮件在 Raspberry Pi 上运行 bash 命令”食谱. 简单地说,去这个 IFTTT 食谱,然后点击 添加.

ifttt-recipe-to-run-commands-on-pi-by-email

设置 Dropbox 上传器

我们需要 Dropbox 上传器一个命令行程序,可以从 Dropbox 上传、下载、列出或删除文件。 以下是如何设置它:

1. 在你的树莓派上, 获取必备软件 卷曲wget. 您可能已经安装了这些,但我们将安装它们以防万一:

[sourcecode]sudo apt install wget curl[/sourcecode]

2. 创建文件夹 我们将在哪里设置它。 在这里,我创建了一个名为 raspi_email 在我的主文件夹中:

[sourcecode]mkdir ~/raspi_email
cd ~/raspi_email[/sourcecode]

3. 获取 来自 GitHub 的 Dropbox Uploader 脚本, 和 将其标记为可执行

[sourcecode]wget https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh

chmod +x ./dropbox_uploader.sh[/sourcecode]

4.运行dropbox_uploader.sh 脚本。 你会看到这样的输出:

保管箱上传器

5. 现在你需要 创建 Dropbox 应用. 登录 Dropbox,转到此 URL,您将在其中看到如下所示的屏幕:

保管箱 API

6. 如上图,首先选择 Dropbox API,然后选择 完整的 Dropbox 在所需的访问类型中。 最后, 姓名 您的应用程序随心所欲。

7. 成功创建新应用后,向下滚动到 OAuth2 部分,然后单击 产生 按钮生成访问令牌。 您现在将看到生成的访问令牌,其中 产生 按钮了。 复制此令牌,将其粘贴到终端中,然后按 进入

Dropbox-uploader2

8. 验证您的帐户是否正常工作,执行命令 ./dropbox_uploader.sh list – 您应该会看到 Dropbox 帐户中的文件列表。

设置 Raspi Runner

在您的 Raspberry Pi 上,下载 Raspi Runner 脚本 在里面 raspi_email 我们之前创建的文件夹:

[sourcecode] cd ~/raspi_email

wget https://raw.github.com/enkydu/Raspi_Runner/master/raspi_runner.sh[/sourcecode]

制作脚本 可执行的,并运行它:

[sourcecode]chmod +x ./raspi_runner.sh

./raspi_runner.sh[/sourcecode]

您现在将看到如下图所示的提示。 当脚本询问您的完整路径时 Dropbox 上传器, 输入路径 给你的 目录(可能 /home/pi/),然后是 文件夹名称 您在其中下载了 dropbox_uploader.sh 脚本。 如果您逐字遵循本指南,您将输入 /home/pi/raspi_email 这里。

raspi-runner

设置 crontab

基础准备好后,就需要 安排 Raspi Runner 的运行. 例如,您可以将其设置为每 5 分钟检查一次电子邮件。我们将使用 crontab 为了这。 在您的 Raspberry Pi 上,运行:

[sourcecode]crontab -e[/sourcecode]

在文件的底部,添加以下行:

[sourcecode]*/5 * * * * /home/pi/raspi_email/raspi_runner.sh > /dev/null 2>&1[/sourcecode]

当然,在上面的例子中, 代替 圆周率 使用您的用户名,以及 raspi_email 与您放置的文件夹 raspi_runner.sh 脚本。现在保存你的 crontab。

用法

只需发送一封电子邮件,其中包含您希望在 Pi 上执行的命令 trigger@recipe.ifttt.com 来自 您用于设置 IFTTT 帐户的电子邮件地址. 电子邮件的正文将包含命令。 您可以在电子邮件中添加您喜欢的任何主题,但建议您添加一个。 在以下示例中,我正在命令我的 Raspberry Pi 关闭

电子邮件

在您设置的延迟量之后 crontab, 这 raspi_runner.sh 将运行并执行电子邮件中包含的命令。

还请参见:如何设置和开始使用 Raspberry Pi 3(入门指南)

使用 IFTTT 在 Raspberry Pi 上远程运行命令

这就是你如何使用 IFTTT、Dropbox 和一些命令行魔法在你的 Raspberry Pi 上远程运行命令的方法。 当然,如开头所述,此方法也适用于任何安装了 Bash shell 的 Linux 或类 Unix 系统。

请继续关注未来更多的 Raspberry Pi 提示和技巧。 如果您在设置时遇到问题,或者想与我们分享您自己的一些很酷的 IFTTT 技巧,请务必在下面的评论部分给我们留言。

Leave a Comment

Your email address will not be published.