min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

php ブラウザ上でPINGを飛ばしてサーバの生存確認をする

 

WakeOnLanで起動させた遠隔地のサーバが正しく起動したかどうかを確認したい。

構成

 ①サーバ(192.168.3.11)

 普段はスリープ状態。WakeOnLanで起動させる

 ②RaspberryPi(192.168.3.9)

 サーバのすぐ隣にある。WebサービスApache)あり。PHPあり。

やること

 ③外出先のiPhoneから②のPHP経由でPINGを飛ばし、①が起動しているか確認する。

完成品

 ③が成功するとこんな画面になる。

 f:id:min117:20160720094448p:plain

ソース

f:id:min117:20160720094857p:plain

f:id:min117:20160720094837p:plain

 

 

 

RaspberryPi 3 に他のラズベリーパイ(初代)のSDカードを認識させてファイルを救出する

 

一番はじめに買ったRaspberryPi(初代)の設定を変えたら、動きがおかしくなってしまった。LANの接続を変えたせいか、sshできない。

これが初代RaspberryPi。LANケーブルは挿さっているが、IPアドレスDHCP取得できていないのか、できていても何番が振られたのか検討がつかず、接続できない状態。

f:id:min117:20160718094209j:plain f:id:min117:20160718094228j:plain

やむをえないので、OSの入っている16GBのSDカードを引っこ抜いて、別にあるRaspberryPi3で認識させて、ファイル設定を直す。

ーーー

流れ

 RaspberryPi(初代)→ OSのSDカードをぬく

 RaspberryPi3 → そのSDカードをUSBアダプタで挿してファイル救出を試みる。

使うコマンド

 $ sudo -s

 # dmesg | grep dev

 # lsusb

 # df

 # fdisk -l | grep dev

 # ls /dev | grep sd

 # mount

ーーー

作業

RaspberryPi3にSDカードを挿してみた。/dev/mmcblk0p2 で認識されているようなので、これを /volumes/temp に mount する

# fdisk -l | grep dev

# mount -t ext4 /dev/mmcblk0p2 /volumes/temp

f:id:min117:20160718094653p:plain

f:id:min117:20160718093816p:plain

これで設定を変えられた。

作業が終わったらアンマウントする。

# umount /dev/mmcblk0p2

f:id:min117:20160718093829p:plain

fedora 自動S3スリープ(pm-hibernate)→ WOLで自動起動(夜間電力運用) → WakeUPのときにpt3_drvが読み込まれない → /etc/pm/config.d/pt3 で対処

メインサーバ fedora の電気代がそこそこ高くつくので、安い夜間電力での運用に切り替える。

流れ

 朝 6:55 自動でスリープする

 (pm-hibernateコマンドをサーバのcronに登録する)

 夜22:55 自動起動する

 (WOLWakeOnLan/常時起動のRaspberryPiからMagicPacketを定時にcron発出して叩き起こす)。

サーバ

 メインサーバ fedora はこれ。HP ProLiant Microserver N54L。

 買った時は12,000円くらいだった。ものすごいコスパよい。もう1台買っておくんだった。その後に後継機種(Gen8)が出たけど、8万円とか。

 ※ 同じような経験した人もいるようだ。

 HP ProLiant MicroServer N54L 終息に伴い代わりを検討する (きりしま屋)

課題

 ①スリープのときにしっかりと電源が落ちるか?(作業はディスクに書き出され、ファンが止まり、電源消費が減るのでなければ意味が無い)

 ②スリープ復帰(WOL)したあとに、その前からしていた処理は継続されるか?

解決

 ①について

 pm-hibernate というコマンドでスリープできた。似たようなので pm-suspend というコマンドもあるが、これだとファンは回りっぱなしだし、スリープの意味が無い(なお、pmは「PowerManager」の意味らしい)。

 ②について

 スリープからWOLで復帰した後、なぜかpt3を認識できず、テレビ番組の録画ができなくなってしまった。スリープの際にpt3のドライバをアンロードして、その後に読み込みしていないからっぽい。以下で解決。

$ vim /etc/pm/config.d/pt3

SUSPEND_MODULES="pt3_drv"

f:id:min117:20160718091235p:plain

この記述があると、pmサービスはスリープ時に pt3_drv をアンロードし、WOL復帰時に再度読み込みをしてくれるようだ。

ーーー

気づいた点

 ・サーバ fedora と RaspberryPi は、BUFFALOの無線LAN中継器「WEX-G300」を経由して無線接続しているが、MagicPacketは中継器を超えてブロードキャストできた。

f:id:min117:20160718092417j:plain 

 ・まれに pm-hibernate が失敗するときがある。サーバに ssh で入って pm-hibernate を叩いた後、直後のコンソールでEnterキーを連打等してしまうと、スリープされない仕様ぽい。

 ・動画のエンコード(HandBrakeCLI)している最中にスリープしても、復帰したら続きからエンコードが再開した。

 ・ffmpegエンコードでも同じ。レジューム作業できる。

 ・一時的にサーバの samba 共有が参照できなくなるので、NASとして接続してる周辺機器への影響が大きい。RaspberryPiでは mount -a が必要になる。

今後

 ・iPhoneiPadで外出先からスリープできるようにする(ApachePHPでやるか)。

 ・同じく外出先からWOLでWakeUPできるようにする。

 ・正しくスリープしたか、WakeUPしたかを、pingで生存確認できるようにする。pingの結果をHTMLに吐いて外出先から参照する。RaspberryPiからもpingして、結果をHDMI経由でテレビに映す。

 

 

 

 

 

 

 

RaspberryPi 3 自宅と職場それぞれの無線環境に固定IPで自動接続する(複数WiFi対応)

 

RaspberryPi(USB無線LAN子機付き)を持ち運んだ先で、自動でWiFiに接続されるようにしたい。

↓ 青く光るのが無線LAN子機

f:id:min117:20160718064859j:plain

RaspberryPiの電源さえ入れれば、自宅にいるときは自宅のWiFiに、職場なら職場WiFiに、自動で繋がるようにする。

ーーー

仮に

 自宅無線LAN → 192.168.3.***

 職場無線LAN → 192.168.2.***

と仮定して設定する。

ーーー

まずは自宅無線LANSSIDへの接続に使うパスワードを用意する。

 SSIDJITAKU

 パス:password

だとすると

# sudo -s

wpa_passphrase JITAKU password

wpa_passphraseコマンドを使ってpasswordを暗号化する)

 

f:id:min117:20160718065747p:plain

psk=46808… という長い文字列が、暗号化されたパスワード。

ーーー

同じように、職場SSIDの分も用意する。

 SSIDSYOKUBA

 パス:password2

だとすると

# sudo -s

# wpa_passphrase SYOKUBA password2

f:id:min117:20160718070248p:plain

これで、自宅と職場それぞれのSSIDと、それに対応するパスワード(psk)ができた。あとはこれをRaspberryPiの設定に埋め込めばいい。

ーーー

# vim /etc/wpa_supplicant/wpa_supplicant.conf

f:id:min117:20160718070556p:plain

自宅と職場それぞれの設定を記載する。

f:id:min117:20160718072206p:plain

ssid

 自宅WiFiSSIDを記載する。

proto

 接続に使うプロトコル(接続方式)。WPA-PSK2を使うので「WPA2」とする。

key_mgmt

 WPA-PSK2 で接続する場合であっても「WPA-PSK」とする(末尾に2は付けない)。

pairwise

 「TKIP CCMP」としておけばOK。

group

 「CCMP」としておけばOK。

#psk

 行ごと消してOK(シャープでコメントアウトされている。備忘のためだけ。あるとパスワードが丸見えだから、消したほうがいいと思う)。

psk

 6行目のSSIDに対応したパスワード。事前にwpa_passphraseコマンドで作っておいた文字列をコピペする。

id_str

 設定を一意に識別するための文字列。複数WiFiに対応する際のキモ。このあと、/etc/network/interfaces を編集するときに使う。

ーーー

最後に、上記で作った id_str を無線LANのインターフェースに割り当てる。

# sudo -s

# vim /etc/network/interfaces

f:id:min117:20160718072555p:plain

f:id:min117:20160718073416p:plain

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd

# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:

source-directory /etc/network/interfaces.d

 

auto lo

iface lo inet loopback

 

iface eth0 inet static

address 192.168.3.30

netmask 255.255.255.0

gateway 192.168.3.1

 

allow-hotplug wlan0

iface wlan0 inet manual

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

 

iface wlan_JITAKU inet static

address 192.168.3.31

netmask 255.255.255.0

gateway 192.168.3.1

 

iface wlan_SYOKUBA

inet static

address 192.168.2.31

netmask 255.255.255.0

gateway 192.168.2.254

 

#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

ーーー

ここまでできたら、あとはRaspberryPiを再起動すれば、いる場所(自宅or職場)の無線LANに繋がる。

ーーー

2016/11/27追記

もっとわかりやすく結論だけまとめた。

min117.hatenablog.com

RaspberryPi 3 omxplayerのテレビ出力音量はキーボード(+/−)でコントロールできる

 

RaspberryPi 3 でmp3を再生しっぱなしにして、テレビでラジオや音楽を流している。音量調整はテレビのリモコンでやってたけど、omxplayer からもコントロールできるらしい。

わかった部分でまとめ。

ーーー

キーボード

 ー(マイナス) 音量を下げる

 +(プラス)  音量を上げる

 ↑(矢印の上) 10秒進める

 ↓(矢印の下) 10秒戻る

f:id:min117:20160717111912p:plain

他にもたくさん操作があるらしいけど、jklmとかのキーは効かなかった。SSH

経由で入っているからか?操作元のMacbookAirのGoogle日本語入力の問題?

原因は分からないけど、音量調整と再生位置の選択だけできれば困らないからこれで充分。

ーーー

参考

$ man omxplayer

f:id:min117:20160717112228p:plain

f:id:min117:20160717112241p:plain

f:id:min117:20160717112256p:plain

f:id:min117:20160717112338p:plain

f:id:min117:20160717112401p:plain

f:id:min117:20160717112414p:plain

RaspberryPi 3 でCD-ROMから音楽をリッピングする

知り合いバンド自作のCD-ROM。もらったは良いけど、うちにはコンポとかラジカセとか無い。

RaspberryPi3 + BUFFALO製のDVDドライブ で音楽ファイルにリッピングする。

 

 

 

準備

 ドライブはこれ。BUFFALO製「DVSM-PN58U2V-BK」。

RaspberryPi3はこれ。

DVDドライブの接続

 RaspberryPi3 のUSBに挿して接続。

f:id:min117:20160716082813p:plain

$ dmesg | grep sr

f:id:min117:20160716082941p:plain

 

Attached scsi CD-ROM sr0」とあり、/dev/sr0 で認識されているのが分かる。一応 /dev/ の下も見ておく。

$ ls /dev/ | grep sr

f:id:min117:20160716083238p:plain

 

マウント用のフォルダ cdrom を作る。

$ mkdir /volumes/cdrom

$ chmod 777 cdrom/

f:id:min117:20160716083355p:plain

 

CD-ROMをマウントするときは、mountコマンドの-tオプション(type)として「iso9660」を指定すればよいらしい。

$ sudo mount -t iso9660 /dev/sr0 /volumes/cdrom

f:id:min117:20160716084320p:plain

 

CD-ROMをマウントできたので、いよいよリッピングする。ここ参考に。

nico-lab.net

ffmpegエンコードできるらしい(ちなみにffmpegは既にインストールしてある)。

f:id:min117:20160716084625p:plain

ただ、この例だとドライブ指定が「F:」となっている。Windowsでの案内みたい。今回はLinuxなので、ドライブ指定は /dev/sr0 のようにする。

ffmpeg のサイトに使い方の案内があった。

FFmpeg Devices Documentation

f:id:min117:20160716084936p:plain

同じようにやってみる。注意点は3つ。

-f libcdio を指定する。

-ss で入力時間を指定しないとリッピングできない。

③ 吸い出すCD-ROMの指定は -i /dev/sr0 

実行。

$ ffmpeg -f libcdio -ss 0.000001 -i /dev/sr0 out.wav

f:id:min117:20160716090159p:plain

リッピング開始した。

f:id:min117:20160716090239p:plain

CDのリッピング程度だと RaspberryPi3 でも結構速い。16曲のCDが30分もあれば吸い出しが終わる。

その昔、まだCPUが400Mhzですごい!とか言われていた時代は、リッピングが30分で終わる爆速!なんて雑誌に書かれていたのを思い出す。ほんとに進化の速い世界。

ーーー

リッピング終了。RaspberryPi からHDMI接続したテレビで再生してみる。

f:id:min117:20160716090836p:plain

かなり音キレイ。素のwavそのままだからか。

ーーー

あとはCDをトレイから取り出すだけ。これもコマンドで。/dev/sr0 ではなく /dev/cdrom と指定するみたい(なぜ?)。

$ eject /dev/cdrom

f:id:min117:20160716083339p:plain

取り出された。

f:id:min117:20160716090734p:plain

いやほんと RaspberryPi 素晴らしい。何でもできる。

RaspberryPi 3 vimrc(syntax on、set number)で文字色&行番号を表示する

 

RaspberryPi3 を買ってから、何でかvimに文字色が付かないなぁと思ってたらvimrcを変更するのを忘れてた。

f:id:min117:20160716064435p:plain

$ sudo vim /etc/vim/vimrc

(変更前) "syntax on

(変更後)syntax on  ← コメントを外す

f:id:min117:20160716064606p:plain

変更は即座に有効になるらしい。文字色がついた。

f:id:min117:20160716064650p:plain

ついでに vimrc に「set number」の1行も追記。行数表示もONになった。

毎日使うものが使いやすくなるのは良い。