AppleWatchで「録画」を押したらテレビ録画するアプリを作りたい。POST文を投げて録画サーバ側のPHPを叩ければいけるはず。
Xcodeは 8.2.1。
まずは作っていってみる。
前記事で注文していたRaspberryPi ZERO が元旦に届いた。縁起が良い。さっそく開封。
インターフェース等の詳細はこのへん。
5ドルのラズパイ!Raspberry Pi Zero | Device Plus - デバプラ
マイクロHDMIとSDカード(16GBでいいや)をAmazonで購入。
ーーー
届いた。ケースも着いたので装着してみる。
OSMCをインストールして日本語化。このへん参照。
日本語化は、テレビのリモコンだけでできる。わざわざsshで入る必要なし。
OSMCの場合も動画をスムーズに再生するには、MPEGキーを買わないといけない。買い方は別記事参照。
購入したキーをOSMCに設定する。ここはsshが必要。
初期のパスワードは「osmc」。
$ cd /boot/
$ vi config.txt
(OSMCには vim は入っていないようだ)
購入したキーを追記する。
動画再生してみる。
最高。テレビのリモコンからNASの動画がサクサク再生できる。このサイズでこのスペック。RaspberryPi最高だ。
# apt-get -y install build-essential zlib1g zlib1g-dev libxml2 libxml2-dev libxslt-dev locate libreadline6-dev libcurl4-openssl-dev git-core libssl-dev libyaml-dev openssl autoconf libtool ncurses-dev bison curl wget postgresql postgresql-contrib libpq-dev libapr1 libaprutil1 libsvn1 libpcap-dev
# apt-get -y update
# apt-get -y install build-essential zlib1g zlib1g-dev libxml2 libxml2-dev libxslt-dev locate libreadline6-dev libcurl4-openssl-dev git-core libssl-dev libyaml-dev openssl autoconf libtool ncurses-dev bison curl wget postgresql postgresql-contrib libpq-dev libapr1 libaprutil1 libsvn1 libpcap-dev
また Ruby の json のとこでエラーだ。ラズパイの初代に入れた時と同じ。
git cloneで入れた Ruby版は実行あきらめよう。
ーーー
metasploitのサイトから落としたインストーラバイナリ(.run)を直接叩くとどうなるんだ?
RaspberryPi3 は32bit版のはず。sudo で実行してみる。
# ./metasploit-latest-linux-installer.run
別のサイトの内容でテスト。
どうも情報が少ない。metasploit を RaspberryPiでやるって方向性に無理があるのか?armアーキテクチャではうまくないのかもしれない。
ーーー
Dockerでやってみる。別記事にする。
最高の書籍買った。「実践 Metasploit」(オライリージャパン)。手に取って、中を見た瞬間に買うの決めた。知りたかった情報が盛りだくさん。
さっそく、RaspberryPiに Metasploit Framework をインストールして実践していく。手順はこのサイトにあった。
ーーー
先に結論を書く
・RaspberryPi(初代)でインストール(この記事)→ うまくいかず
・RaspberryPi 3 でインストール(この記事末尾)→ うまくいかず
・Docker上のCentOSでインストール → 成功
ーーー
RaspberryPi(初代)へのインストール。sudo -s して作業する。
# apt-get -y install build-essential zlib1g zlib1g-dev libxml2 libxml2-dev libxslt-dev locate libreadline6-dev libcurl4-openssl-dev git-core libssl-dev libyaml-dev openssl autoconf libtool ncurses-dev bison curl wget postgresql postgresql-contrib libpq-dev libapr1 libaprutil1 libsvn1 libpcap-dev
インストールされた。いくつか取得できないとあるが、まずは無視する。
# apt-get install git-core postgresql curl ruby1.9.3 nmap gem
# gem install wirble sqlite3 bundler
インストールされた。
なぜか /opt での作業が必須らしい。
# cd /opt
# git clone https://github.com/rapid7/metasploit-framework.git
冒頭書籍では cd /opt/framework/msf3/ したあとに msfconsole し、それから cowsay++ コマンドを打てとあるが、フォルダ構成はすこし違うみたい。
gem で bundler を入れろときた。
# gem install bundler
インストール完了。再度metasploitを実行。
# ./msfconsole
またエラーか。gemって何rubyか? Run bundle install しろ とあるからやる。
# bundle install
root 権限で実行するな、と出た。やむないから Ctrl+c でいったん止めて、rootからpiに戻してbundle install する。
なんか赤文字でエラーになる。
途中で Ctrl+c したのがまずかったか?再度bundlerをインストールする。
# gem list
「could not be found in any of the sources listed in your Gemfile」でググる。
これやって動いたよ!という記述発見。
やってみる
# bundle install --binstubs
rubyzip でコンソールが固まって(?)返ってこないから ctrl+c していったんキャンセル。再度 # bundle install --binstubs したら、jsonがおかしいとのエラーが出た。指示に従って再インストールする。
"mkmf.rb can't find header files for ruby"の対応 - Qiita
ダメだな。ruby大っ嫌い。RaspberryPi3で試すか。
大量の動画ファイルをブルーレイ(片面25GB)に焼いていくけど、どれとどれを焼けば合計で25GBか?を考えるのが面倒。こういうのこそコンピュータにやらせる。
ーーー
毎行ごとにファイル容量の合計を出す
$ { for i in *{ts,mp4}; do ls -shal "$i" | awk '{a+=$1; print $1,$10}'; done;} | awk '{a+=$1;print $1,a,$2} END{print "----\n" a}'
拡張子がtsまたはmp4のファイルの一覧で、毎行ごとの合計を出してくれる。この例だと、最終行で合計が26.3GBになるからブルーレイをオーバーしちゃうのがわかる。最終行では合計も出る。
1列目には「G」が付いているのに、無視して合計してくれるawkすごい。
ーーー
for文を無くしてシンプルにする改良。
$ ls -shal *{ts,mp4} | awk '{a+=$1;print $1,a,$10} END{print "----\n" a}'
録画した地デジ動画ファイルが溜まっているので、容量の大きい(GB超のもの)を取り出してブルーレイに焼きたい。動画はこんな感じ。
$ ls -shal | grep NHK.*ts.*mp4
サイズ(第1列)がギガバイト(G)のものだけにする。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if ($1 ~ /G/) print $1,$10}'
awk は形で覚える。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if ($1 ~ /G/) print $1,$10}'
このへん参照した。
The GNU Awk User's Guide - 正規表現
ーーー
1列目だけを合計したい。「1.4G」だとGの字が邪魔で合計できない。数値(1.4)にしたい。awkの区切り文字をGにしちゃえばいい。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if ($1 ~ /G/) print $1,$10}' | awk -FG '{print $1}'
よし。これで数値になった。あとはこれを合計する。awkは少数でも合計できるようだ。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if($1 ~ /G/) print $1,$10}' | awk -FG '{print $1}' | awk '{a+=$1} END{print a}'
合計56.2GBと出た。念のため検算してみる。pythonで地道に手で叩くか。
確かに 56.2GB のようだ。これは便利。
ーーー
各行と合計行をわかりやすく表示するようにした。
$ ls -shal | grep NHK.*ts.*mp4 | awk '{ if($1 ~ /G/) print $1,$10}' | awk -FG '{print $1}' | awk '{a+=$1; print $1} END{print "------\n" a}'
このへん参照。
ーーー
容量がGB超のファイルについて、サイズとファイル名を出力する。
$ ls -shal | grep NHK_ | awk '{print $1,$10}' | awk '{if($1 ~ /G/) print $1,$2}'
バッククオートに食わせて、for文に流し込んでみる。
$ for i in `ls -shal | grep NHK_ | awk '{print $1,$10}' | awk '{if($1 ~ /G/) print $1,$2}'`; do echo "$i"; done
ファイル名だけあればいい。
$ for i in `ls -shal | grep NHK_ | awk '{print $1,$10}' | awk '{if($1 ~ /G/) print $1,$2}'`; do echo "$i" | grep mp4; done
あ。for文に食わせる必要ないや。awk のときに ファイル名だけ出せばいいのか。
$ ls -shal | grep NHK_ | awk '{print $1,$10}' | awk '{if($1 ~ /G/) print $2}'
これをファイルにいったん落とす。確認の意味も含めて。
専用のフォルダを作る。
$ mkdir OVER_GB/
for文で移動する。
$ for i in `cat over_GB_files.txt`; do echo "$i"; mv "$i" OVER_GB/; done
iMac上からも確認。あとはこれをブルーレイに焼くだけ。