Ubuntu Weekly Recipe

第377回Pushbulletで通知をお手軽にしてみよう

ご家庭で常時動いているサーバーの情報をどのように通知していますか? メールや専用のミドルウエアを利用して通知している方も多いかと思いますが、メールサーバーやミドルウェアなどの構築となると少しハードルが高くなってしまいます。

今回はPushbulletの紹介と併せて、UbuntuでPushbullet利用してお手軽にサーバーの情報を通知してみます。

Pushbulletとは?

Pushbulletはサイトの説明にあるように、スマートフォンやタブレット、PCなどのデバイス間を接続するサービスで、スマートフォンやタブレットからの通知をデスクトップへ、またその逆へとデバイス間の通知を共有できるサービスです図1⁠。

図1 Pushbullet
図1 Pushbullet

対象となるデバイスは、AndroidやiPhoneといったスマートフォンをはじめとし、ChromeやFirefox、SafariやOperaなどのブラウザー拡張機能、WindowsやMax OS X上でのアプリケーションでも提供されています。

Pushbulletで共有できるデータは以下になります。

  • テキスト
  • リンク
  • 画像(25MBまで)

注意として、通知したデータはPushbulletのサーバーに保存され、通知先のデバイスから参照する形となります。この参照先はURLを知っている場合は誰でもアクセス可能であるため、不要な情報は通知しなうほうが良いでしょう。

Pushbulletの導入

Androidへのインストール

まずスマートフォンにPushbulletを導入してみましょう。ここではAndroidへのインストールを例としますが、iPhoneでも容易に導入できるでしょう。

  1. Google PlayのPushbulletページから[インストール]を選択し、導入したいAndroidデバイスにインストールします。
  2. インストールされたPushbulletを起動し、GoogleアカウントもしくはFacebookアカウントでログインします[1]⁠。
  3. 通知設定でPushbulletを有効にします[2]⁠。

これでスマートフォン側の設定は終了です。注意事項として、インストール直後のPushbulletの設定はスマートフォンで発生したすべての通知を共有しようとします。このため、Pushbulletの設定画面から[有効にするアプリを選択]をタップした後、⁠すべてを無効]を選択し、通知を最小限に抑えておくことをお勧めします図2⁠。

図2 通知を最小限にする
図2 通知を最小限にする

ブラウザへの導入

ブラウザ側の導入も簡単です。ここではChromiumを例としますが、必要に応じてお好みのブラウザに導入して下さい。

  1. ChromeウェブストアのPushbulletのページで[Chromeに追加]をクリックしてインストールします。
  2. Chromeのポップアップで⁠クリックしてサインイン⁠と出ますので、クリックしGoogleアカウントもしくはFacebookアカウントでログインします。

使い方

共有したいテキストやサイトなどがある場合、Androidの場合は共有オプションからPushbulletを選択すれば、Pushbulletの送信画面になります。ここで通知先に登録した端末、もしくはすべての端末を設定し、必要に応じてタイトルやメッセージなどを記入したうえで、右上の送信マークをタップすれば通知先に情報を通知します図3⁠。

図3 Andoridから通知する
図3 Andoridから通知する

ブラウザから共有する場合は、Pushbulletをインストールしたブラウザ上にPushBulletのボタンがありますので、このボタンをクリックした画面でメモ、リンク、ファイルのいずれかの形式と送信先を選択し、⁠プッシュ]をクリックすると通知先に通知することができます図4⁠。

図4 Chromiumから通知する
図4 Chromiumから通知する

Ubuntu DesktopでのPushbullet環境

PushbulletはUbuntu Desktop向けに単独で動作するアプリケーションとしてPushbullet indicatorが用意されています。ブラウザでなく、アプリケーションで通知を受信したい方はこちらで利用してみるのも良いでしょう。

以下のコマンドでpushbullet-indicatorとNautilusの拡張であるnautilus-pushbulletパッケージをインストールします。

$ sudo add-apt-repository ppa:atareao/atareao
$ sudo apt-get update
$ sudo apt-get install pushbullet-indicator nautilus-pushbullet

インストールが完了したら一度ログアウトしてセッションを再起動します。再度ログインすると通知エリアにPushbulletのアイコンが表示されます。pushbullet-indicatorの利用方法は通知エリアにあるPushbulletアイコンをクリックして[send push]を選択し、送信したい端末を選択して[OK]を押すと通知を送信することができます図5⁠。

図5 pushbullet-indicatorから通知する
図5 pushbullet-indicatorから通知する

また、ファイルを通知して共有する場合は、Nautilusから対象のファイルを右クリックし[Pushbullet][Send to...]を選択すると通知先を指定する画面が出ますので、通知先を選んで[OK]をクリックするとファイルを共有することができます図6、7⁠。

図6 Nautilusからファイルを共有する(⁠⁠Send to ...]を選択)
図6 Nautilusからファイルを共有する([Send to ...]を選択)
図7 Nautilusからファイルを共有する(通知先を選択)
図6 Nautilusからファイルを共有する(通知先を選択)

CUI環境からPushbulletを利用する

Ubuntu ServerなどのCUI環境向けにはPushbulletから提供される公式なアプリケーションはありません。しかし、Pushbulletが提供するアクセストークンを利用することでPushbulletに通知することができます。アクセストークンはアカウント設定ページ⁠Access Token⁠欄にある文字列になります。あとで利用しますので事前に控えておきましょう。

PushbulletはJSONを利用したHTTPを利用して端末間の通知を実現しています。それでは、コマンドラインからHTTPを送信できるcurlをインストールし以下のコマンドを実行してみましょう。アクセストークンは先ほど控えたものを利用します[3]⁠。

$ sudo apt-get install curl
$ curl --header 'Authorization: Bearer YOURTOKENKEY' -X POST https://api.pushbullet.com/v2/pushes --header 'Content-Type: application/json' --data-binary '{"type": "note", "title": "タイトル", "body": "本文"}'

実行すると、すべてのPushbullet環境に通知が表示されます。

このような形でCUI環境でもPushbulletを利用して通知ができますが、長いコマンドラインを毎回入力するのも大変なので、BashインターフェースでPushbulletを簡単に利用できるpushbullet-bashを導入します。pushbullet-bashはGitHub上にあるためgitをインストールし、pushbullet-bashをホームディレクトリ直下にcloneします[4]⁠。

$ sudo apt-get install git
$ cd
$ git clone https://github.com/Red5d/pushbullet-bash.git

pushbullet-bashを導入した後、アクセストークンを~/.config/pushbulletに記載します。

$ echo "PB_API_KEY=YOURTOKENKEY" > ~/.config/pushbullet

これでpushbullet-bashが利用できるようになりましたので、以下のコマンドを入力してみましょう。

$ ~/pushbullet-bash/pushbullet  push all note "タイトル" "本文"

curlで行った時と同じように通知が行われましたが、より簡単に通知できたかと思います。pushbullet-bashの構文はpushbullet <action> <device> <type> <data>の形式で、actionはpushbulletへの制御、deviceは対象のデバイス、typeは送信種別、dataは送信データを指定します。例えばactionに⁠list⁠を指定すると通知の宛先として利用可能なデバイスの一覧を表示します。

$ ~/pushbullet-bash/pushbullet list
Available devices:
------------------
Chrome
Firefox
LGE Nexus 5
Sony SO-02G
Ubuntu
all

Contacts:
------------------

より詳しく知りたい場合はpushbullet --helpで確認すると良いでしょう。

筆者の環境では、⁠/data*⁠でマウントしているディスク容量を1日1回チェックし、その結果をPushbullet経由でAndroid端末に通知したかったため、以下のスクリプトを作成しcronで1日1回実行するようにしています。結果が複数行に渡る場合はxargsのオプションでデリミタを改行以外(下記の場合は-0(null⁠⁠)を指定しておくと良いでしょう。

#/bin/sh

df -h |grep data |awk '{print $6" "$4" "$5}' | xargs -0 /home/youraccount/pushbullet-bash/pushbullet  push "Sony SO-02G" note "Disk info" >/dev/null 2>&1

上記の処理がcronによって実行されると、以下のようにPushbulletから通知されます図8⁠。確認した後は不要になるため、問題がなければ削除しています。

図8 pushbullet-bashから送信されたサーバーのディスク容量を表示
図8 pushbullet-bashから送信されたサーバーのディスク容量を表示

このような感じで、日々情報をチェックしたいけどチェックを行ったら不要になる情報などはpushbulletに置き換えてみると良いかもしれません。

おすすめ記事

記事・ニュース一覧