自分のIPアドレスをMQTTで送信してもらうと、デバグの時にIPアドレスをいちいち調べなくていいので楽だなあ、とおもい試して見ました。
Raspberry Pi で、まずは、どうやってIPアドレスを抽出するかです。
自分のIPアドレスはifconfig
で出てきますが、これは人間用なのでフォーマットがややこしい。
|
|
色々と悩んだ末、こんな感じのコマンドラインではどうかと。。。。
|
|
最初のgrepでインターフェイスのIPアドレスを表示しているフレーズだけを抜き出します。
具体的には行頭から任意の数のスペースがあって、”inet addr:”とあって、任意の文字が続き”B”で終わる部分です。
grep -o '^ *inet addr:.*B'
次に、そのフレーズの中には1つしかIPアドレスは入っていないはずなので、それを抜き出します。
grep -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}'
だいたいこれで、行けそうです。
試しにやってみると。
|
|
今回の目的には十分かとおもいます。
しかし、なんかもっといい方法(どっかのファイルを見るとか)がありそうなきもします。。。。
2015/02/19 追記
今日、IPアドレスを表示するコマンドを発見しました。
$ hostname -I
なんで検索しなかったんだろう。。。。
さて、このコマンドラインをデバイスのスクリプト(cronで動く)にいれてみたところ、うまく動かない。具体的には、結果がNULLになってしまうのです。試しに、手元でコマンドラインから実行するとうまく動く。うう〜ん。
さっぱり理由が分からず、いろいろ調べてみたところ「動かないときはエラーログを取れ!」という啓示をいただき、試してみたところ、command not found
とのこと。ifconfigコマンドへのパスが通ってない、という情けないという状況。言われてみれば確かにそんなことをどこかで見たような気がするなあ。。。。
ということで、ifconfigコマンドを絶対パスで指定して事なきを得ました。
「CRONのコマンドは絶対パス指定」 勉強しました。。。