この問題は、ほぼすべてのRaspberry Piユーザーが直面しています。 あなたは自宅でRaspberry Piを実行していて、その上でコマンドを実行したいとします。 問題は、あなたはあなたの家の外、あなたのモバイルネットワーク上にいて、あなたのPiにアクセスする方法がないということです。 あなたはあなたのホームネットワークへのアクセスを可能にするために静的IPアドレスを得るか、または動的DNSサービスの1つを使うことができます。 しかし、それはほとんどの人にとってはあまりにも不便であり、ほとんど利益を得るためには多大な努力を要します。 さらに、SSHポートは現在世界に公開されているため、Raspberry Piはブルートフォース攻撃を受ける可能性があります。
良いニュースは、より便利で安全な方法があるということです - あなたがRaspberry Piで実行したいコマンドを単に電子メールで送ってください 。 このように、あなたが必要とするのはあなたのPiの上の電子メールクライアントと働くインターネット接続だけです。 ログインも静的IPもありません。 さらに、この方法はRaspberry Piだけでなく、BashシェルとcURLがインストールされているLinuxディストリビューションでも機能します。 かっこいいね? これを設定するために必要なものは次のとおりです。
必要条件
- インターネットに接続しているラズベリーパイ。
- IFTTT.comのアカウント。
- Dropboxアカウント
入門
IFTTTレシピを設定する
電子メールで配信されたコマンドをDropboxに配布するためにIFTTTを使用します。 IFTTTアカウントを設定したら、「 ラズベリーパイで電子メールでbashコマンドを実行する」レシピを使用する必要があります 。 単に、このIFTTTレシピに行き、そしてAddをクリックしてください 。
Dropboxのアップローダを設定する
Dropboxからファイルをアップロード、ダウンロード、一覧表示、削除できるコマンドラインプログラム、 Dropbox Uploaderが必要です。 これを設定する方法は次のとおりです。
1. Raspberry Piで、前提ソフトウェアの cURLとwgetを 入手します。 あなたはおそらくすでにこれらがインストールされていますが、万が一のためにインストールします。
[ソースコード] sudo apt install wget curl [/ sourcecode]
2.セットアップ先のフォルダを作成します 。 ここで、私は自分のホームフォルダにraspi_email
というディレクトリを作成しました。
[ソースコード] mkdir〜/ raspi_email
cd〜/ raspi_email [/ sourcecode]
3. GitHubからDropbox Uploaderスクリプトを入手し、 それに実行可能のマークを付けます 。
[ソースコード] wget //raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
chmod + x ./dropbox_uploader.sh[/sourcecode]
4. dropbox_uploader.sh
スクリプトを実行します。 あなたはこのような出力を見るでしょう:
5.これで、Dropboxアプリを作成する必要があります 。 Dropboxにログインし、このURLに行くと、このような画面が表示されます。
6.上の図のように、まずDropbox APIを選択し、次に必要なアクセスの種類でFull Dropboxを選択します。 最後に、アプリに好きな名前を付けます。
7.新しいアプリが正常に作成されたら、 OAuth2セクションまでスクロールし、[ 生成 ]ボタンをクリックしてアクセストークンを生成します。 [ 生成 ]ボタンがあった場所に生成されたアクセストークンが表示されます。 このトークンをコピーして端末に貼り付け、 Enterキーを押します。
8. 自分のアカウントが機能していることを確認するには、 。 ./dropbox_uploader.sh list
コマンドを実行します - Dropboxアカウントのファイルのリストが表示されます。
ラスピランナーを設定する
ラズベリーパイのRaspi Runnerスクリプトを、 raspi_email
作成したraspi_email
フォルダにダウンロードします。
[ソースコード] cd〜/ raspi_email
wget //raw.github.com/enkydu/Raspi_Runner/master/raspi_runner.sh[/sourcecode]
スクリプトを実行可能にして実行します。
[ソースコード] chmod + x ./raspi_runner.sh
./raspi_runner.sh[/sourcecode]
下の画像のようなプロンプトが表示されます。 スクリプトがあなたのDropboxアップローダへのフルパスを要求するとき、あなたのホームディレクトリへのパス (おそらく/home/pi/
)を入力し、その後にdropbox_uploader.sh
スクリプトをダウンロードしたフォルダの名前を入力してください 。 このガイドを単語/home/pi/raspi_email
ここに/home/pi/raspi_email
と入力します。
クロンタブを設定する
基本が整ったら、 Raspi Runnerの実行をスケジュールする必要があります。 たとえば、5分ごとにEメールをチェックするように設定できます。これにはcrontabを使用します。 ラズベリーパイで、実行します:
[ソースコード] crontab -e [/ sourcecode]
ファイルの下部に次の行を追加します。
[ソースコード] * / 5 * * * * /home/pi/raspi_email/raspi_runner.sh> / dev / null 2>&1 [/ sourcecode]
もちろん、上記の例では、 piをあなたのユーザ名に、そしてraspi_emailをraspi_runner.sh
スクリプトを置いたフォルダに置き換えてください。今度はあなたのcrontabを保存してください。
使用法
IFTTTアカウントの設定に使用し た 電子メールアドレス から、 Piで実行したいコマンドを含む電子メールを[電子メールで保護] に 送信するだけです 。 電子メールの本文にはコマンドが含まれます。 電子メールには好きな件名を追加できますが、追加することをお勧めします。 次の例では、Raspberry Piにシャットダウンを指示しています。
crontabに設定した遅延時間の後、 raspi_runner.shが実行され、あなたのEメールに含まれているコマンドが実行されます。
IFTTTを使用してラズベリーパイでリモートでコマンドを実行する
それで、これはあなたがRaspberry Pi上でリモートでコマンドを実行するためにIFTTT、Dropbox、そしていくつかのコマンドラインマジックを使う方法です。 もちろん、冒頭で述べたように、この方法はBashシェルがインストールされているLinuxまたはUnix系システムでも動作します。
今後ももっとラズベリーパイのヒントやコツをお楽しみに。 あなたがそれをセットアップすることに問題を抱えているか、または私たちとあなた自身のクールなIFTTTトリックのいくつかを共有したいと思うなら、私たちに以下のコメントセクションの行を忘れないでください。