- ベストアンサー
ラズパイ起動時にIPアドレスをメールで取得したい
- ラズパイ起動時にIPアドレスをメールで取得する方法
- 自分のメールアドレス宛にDHCPサーバから取得したIPを通知する方法
- 電源起動時にMyIP.pyを自動起動する方法
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
そもそもrc.localは実行されているんでしょうか? 確実に動作するスクリプトをrc.localに書き込んで調査しましょう。 たとえば touch /tmp/hogehogeo とか rc.localが実行されてるなら造ったスクリプトに問題があるので sudo python /home/pi/PythonProjects/MyIP.py > /tmp/log 2>&1 としてエラーを含めた出力を書き出してどこでコケてるのか調べてみましょう。
その他の回答 (4)
- trapezium
- ベストアンサー率62% (276/442)
> socket.gaierror: [Errno -2] Name or service not known rc.local が実行される段階で、DHCP のネゴシエーションが完了してないんじゃないですか? DHCP クラアントの設定ファイルや、フックなどからメール送信するようにするか、適当な sleep 入れてから実行されるようにしてみたらどうでしょう。 それか DHCP サーバの設定で、固定 IP 振る方が簡単かもしれません。
お礼
回答頂きありがとうございます。 DHCPサーバからIPを取得する前にMyIP.pyを実行しているかもしれないと思い、MyIP.pyのgmailでのメール送信のタイミングを遅らせれば何とかなるのかな?と思い、MyIP.pyのコード内にディレイで3分間sleepさせるコードを追加したところ、ラズパイをreboot後必ずメールが送信させるようになりました。 (追加したコード) from time import sleep WAIT_TIME = 180 sleep(WAIT_TIME) 何か、もっと良い解決方法があるかもしれませんが、とりあえずこれで良いかなと考えています。
- muuming2001
- ベストアンサー率23% (202/847)
さすがに PythonProjects/MyIP.py の中身まではわかりません。 手で動かして動くが rc.localに記載して動かないのであれば、コマンドのパスが通ってないからかもね?
お礼
回答頂きありがとうございます。 DHCPサーバからIPを取得する前にMyIP.pyを実行しているかもしれないと思い、MyIP.pyのgmailでのメール送信のタイミングを遅らせれば何とかなるのかな?と思い、MyIP.pyのコード内にディレイで3分間sleepさせるコードを追加したところ、ラズパイをreboot後必ずメールが送信させるようになりました。 (追加したコード) from time import sleep WAIT_TIME = 180 sleep(WAIT_TIME) 何か、もっと良い解決方法があるかもしれませんが、とりあえずこれで良いかなと考えています。
- mk48a
- ベストアンサー率56% (1133/2007)
こちらが参考になるかと。 http://www.takunoko.com/blog/raspberry-pi-%E8%B5%B7%E5%8B%95%E6%99%82-%E5%AE%9F%E8%A1%8C%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88/ 起動時の自動ログインを設定しています。
お礼
回答頂きありがとうございます。 現在、/etc/rc.localで設定した sudo python /home/pi/PythonProjects/MyIP.py が自動起動しているか調べています。 早速、/etc/rc.localに ”sudo python /home/pi/PythonProjects/MyIP.py > /tmp/log 2>&1” を記述してrebootしてみたところ、 /tmp/logファイルに次のようなエラー内容が記録されました。 (記録内容) Traceback (most recent call last): File "/home/pi/PythonProjects/MyIP_bak.py", line 21, in <module> send = smtplib.SMTP('smtp.gmail.com', 587) File "/usr/lib/python2.7/smtplib.py", line 256, in __init__ (code, msg) = self.connect(host, port) File "/usr/lib/python2.7/smtplib.py", line 316, in connect self.sock = self._get_socket(host, port, self.timeout) File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket return socket.create_connection((host, port), timeout) File "/usr/lib/python2.7/socket.py", line 553, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): socket.gaierror: [Errno -2] Name or service not known とりあえず、”MyIP.py”をスタート時に自動起動しているようなのですが、何かしらwifiとかgmailの通信にエラーが生じている模様です。 /etc/rc.localに関する自動起動の方法も知識が散漫としており大変助かります。
- muuming2001
- ベストアンサー率23% (202/847)
OS何使ってるかかかれてないのでわかりませんが、 http://tsuchinoko.dmmlabs.com/?p=1371 このあたりなんじゃ?
お礼
回答頂きありがとうございます。参考サイトありがとうございます。 このサイトの中にあるrc.localの実行権限の変更を ”$ chmod u+x /etc/rc.d/rc.local” こちらのコマンドを使用してやってみましたが、やはり起動時にメールの送信をしていないようです。 また、OSの情報に関しましては pi@raspberrypi:/usr/lib $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie pi@raspberrypi:/usr/lib $ uname -a Linux raspberrypi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux こちらのOSを使用しています。 どうぞ、よろしくお願い致します。
お礼
回答頂きありがとうございます。 コマンド教えていただきありがとうございます。 早速、/etc/rc.localに ”sudo python /home/pi/PythonProjects/MyIP.py > /tmp/log 2>&1” を記述してrebootしてみたところ、 /tmp/logファイルに次のようなエラー内容が記録されました。 (記録内容) Traceback (most recent call last): File "/home/pi/PythonProjects/MyIP_bak.py", line 21, in <module> send = smtplib.SMTP('smtp.gmail.com', 587) File "/usr/lib/python2.7/smtplib.py", line 256, in __init__ (code, msg) = self.connect(host, port) File "/usr/lib/python2.7/smtplib.py", line 316, in connect self.sock = self._get_socket(host, port, self.timeout) File "/usr/lib/python2.7/smtplib.py", line 291, in _get_socket return socket.create_connection((host, port), timeout) File "/usr/lib/python2.7/socket.py", line 553, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): socket.gaierror: [Errno -2] Name or service not known これは、gmailのサーバーとの通信が接続できなかったという内容でしょうか? どうぞ、ご教示頂きますよう、よろしくお願い致します。