Raspberry Piを弄ったメモ。Raspberry Piを使うのにキーボードやモニタを持ち歩くのは面倒だし、とりあえずAndroidでリモート接続するようにしてみる。基本的には以下の記事のAndroid版である。
狙い
- モニタやキーボードが無くてもRaspberry PiさえあればLinux環境にアクセスできるようにする
- バッテリーを持ち歩けばどこでも(電源がなくても)でも利用可能なはず
前提
- Raspberry Piのセットアップが済んでいること
- この記事を書く時点では、2013-02-09-wheezy-raspbianを使用
- SSHを利用できるように設定しておく
- Wifiドングルなどで無線ネットワークに接続できるようにしておく
- わたしは以下を利用
解決方法
詳細
IPアドレスをメールで送るためのスクリプトを書く
上記の記事だとPHPなどのインストールが必要なのだけれども、今回はあらかじめ準備されているPythonのみで実現できるようにしてみた。
$ sudo nano /usr/local/bin/send_privateip.py
で以下のスクリプトを書く。
#!/usr/bin/python # -*- coding: utf-8 -*- import socket import time import smtplib from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate def create_message(from_addr, to_addr, subject, body): msg = MIMEText(body) msg['Subject'] = subject msg['From'] = from_addr msg['To'] = to_addr msg['Date'] = formatdate() return msg pass def send_via_gmail(from_addr, to_addr, msg): s = smtplib.SMTP('smtp.gmail.com', 587) s.ehlo() s.starttls() s.ehlo() s.login('自分のアカウント@gmail.com', 'ここにGMailのパスワード') s.sendmail(from_addr, [to_addr], msg.as_string()) s.close() if __name__ == '__main__': time.sleep(30) from_addr = '自分のアカウント@gmail.com' to_addr = '自分のアカウント@gmail.com' s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("gmail.com",80)) title = 'From RaspberryPi:' + s.getsockname()[0] body = 'This mail send by Python' msg = create_message(from_addr, to_addr, title, body) send_via_gmail(from_addr, to_addr, msg) s.close()
なお、Google二段階認証をONにしている場合は、アプリケーション固有パスワードを発行して設定する必要があるので注意。
書いたら保存して、実行権限を付与して実行してみる。
$ sudo chmod +x /usr/local/bin/send_privateip.py $ /usr/local/bin/send_privateip.py
これでメールが届けば設定成功。
起動時にスクリプトを自動的に実行する設定を行う
次に先程作成したスクリプトが起動時に自動実行されるように設定する。具体的には、起動時に自動実行される/etc/rc.localで呼び出すように設定するだけだ。
$ sudo nano /etc/rc.local
で、Exitの前の行に以下を書き込んで保存。
/usr/local/bin/send_privateip.py
リブートした後にメールが届けば設定成功。
$ sudo reboot
Android端末でデザリング設定する
最後に、Android端末でデザリング設定すれば作業は完了である。電源を投入した後に届くIPアドレスの通知を見て、SSHやVNCなどを利用すればいい。
クライアントはいまのところ下記を使用している。
- https://play.google.com/store/apps/details?id=org.connectbot
- https://play.google.com/store/apps/details?id=com.toremote.vncmanager
- なおRaspbianには最初はvncserverが導入されていないので、別途導入する必要がある。以下あたりを参考に。
- Raspberry PiにVNCで接続する - ぱせらんメモ