しらすの備忘録

調べごとの備忘録です。

CasperJSで書いたものをcronで定期実行する

はじめに

CasperJSでブラウザの自動操作を書いたので、Cronで自動実行させる。
自動操作の中身はざっくりいうと、あるサイトにログインして、ボタンを一個押す作業。
これを一日一回行いたい。

cronにPATHを通す

cronにはパス(環境変数)がほとんど通っていないので、nodejsのパスを通してやらないとcasperjsも動かない。
cronにパスを設定する方法は色々あるみたいだが、crontabに直接書き込む方式にする。
crontabの編集は以下コマンドから。初めて実行すると利用するエディタを選択できる。vimを選んだ。

$ crontab -e


sirasu55.hatenablog.com
前の記事と同じようにnodejsをインストールしたならパスは以下のように追記する。

PATH=/usr/local/bin:/usr/bin:/bin:/home/pi/.nvm/versions/node/v6.11.4/bin

「:」で区切られたパスがそれぞれ環境変数になるらしい。
「/usr/local/bin:/usr/bin:/bin」まではデフォルトでも通ってるパス?
左のほうが優先されるらしいけどよくわからない。要勉強。
とりあえず1番右でも問題なかった。

もしnodejsを違う方法でインストールしたなら、以下のコマンドで現在のパスを確認できる。
casperjsが動く環境で実行してみて、それっぽいパスを追記すれば良いと思う。

$ echo $PATH

自動実行を登録する

同じく

$ crontab -e

パス以降の行に追記する

# 毎日6時半に自動実行
30 6 * * * casperjs [自動実行したいjsファイルのパス]

上記はこんな意味
「分 時 日 月 曜日 自動実行するコマンド」
例)

#毎日6時にプログラムを実行する
00 6 * * * python /home/hoge/script1.py
  
#毎時10分にプログラムを実行する
10 * * * * python /home/hoge/script2.py
  
#15分毎にプログラムを実行する
*/15 * * * * python /home/hoge/script3.py
  
#毎週月曜日10:00にプログラムを実行する
00 10 * * 1 python /home/hoge/script4.py

Raspberry Pi 3 Model BにCasperJSをインストールする

CasperJSとは

ヘッドレスブラウザのPhantomJSを利用してブラウザ操作を行えるライブラリ。
Webサイトのスクレイピングだとか、フォーム入力だとか、ボタン押下だとか、そういうのをコード書くことで自動化できる。
開発におけるテストのためにも使われているらしい。

PhantomJSインストール

PhantomJSがないとCasperJSも動かないのでインストールする。
ソースコードからビルドするのが本当らしいが、めっちゃ時間かかるらしい。
ビルド済みを上げてくれている人がいるので、それを利用させて頂く。

$ sudo apt-get install libfontconfig1 libfreetype6 libpng12-0
$ curl -o /tmp/phantomjs -sSL https://github.com/fg2it/phantomjs-on-raspberry/releases/download/v2.1.1-wheezy-jessie/phantomjs
$ sudo mv /tmp/phantomjs /usr/local/bin/phantomjs
$ sudo chmod a+x /usr/local/bin/phantomjs

配布元
phantomjs-on-raspberry/rpi-2-3/wheezy-jessie/v2.1.1 at master · fg2it/phantomjs-on-raspberry · GitHub

動作確認

$ phantomjs --version

CasperJSインストール

こっちはnpmでインストール可能

$ npm install -g casperjs

他のサイトを見ていると、「PhantomJSのパスが通ってなくてCasperJSも動かない」みたいなことも多いようだが、今回は何もしなくて問題なかった。

動作確認

$ casperjs --version

Raspberry Pi 3 Model BにnvmでNode.jsをインストールする

はじめに

Raspberry Piで最新版のNode.jsを利用するためにnvmでバージョン管理をしながらインストールする。

古いNode.jsをアンインストール

Raspberry Piには最初からNode.jsがインストールされているが、古いバージョンのためアンインストールをする。

$ sudo apt-get autoremove nodejs

nvmをインストールする

nvmインストール用フォルダを作成し権限を付与

$ sudo mkdir ~/.nvm
$ sudo chmod 777 ~/.nvm

nvmのリポジトリのクローンを作成
ここでサーバーに接続できないエラーが出たが、ラズパイを再起動したらエラーは消えた

$ git clone https://github.com/creationix/nvm.git ~/.nvm

nvmを使えるようにする

$ source ~/.nvm/nvm.sh

nvmのバージョンを確認できればOK
2017/10/11時点では「0.33.5」がインストールされた

$ nvm --version

Node.jsのインストール

nvmでインストールできるnodeを確認し、LTSを選んでインストールする
今回はnode v6.11.4をインストールしたら、npm v3.10.10もインストールされた

$ nvm ls-remote
$ nvm install v6.11.4

nodeとnpmのバージョン確認

$ node -v
$ npm -v

起動時にnodeが動くようにする

$ sudo vim /etc/profile.d/nvm.sh
内容は以下
source ~/.nvm/nvm.sh

デフォルトのバージョンを設定する

$ nvm alias default v6.11.4


以上

Raspberry Pi 3 Model BにRASPBIANをインストールしてWindows10からSSH接続するまで

1. はじめに

Raspberry Pi 3 Model Bを購入したので、OSをインストールして、メインのWindows10機からSSHで繋げるようにする。今後の利用予定から、OSはGUIのあるものを選んだ。

2. OSのインストー

このセクションでは、Windows10機上で作業を行う。

2.1. OSをダウンロードする

以下の公式ページから「RASPBIAN JESSIE WITH PIXEL」をダウンロード。
ダウンロード後は解凍しておく。
https://www.raspberrypi.org/downloads/raspbian/
今回ダウンロードしたのは下記バージョン
Version:April 2017
Release date:2017-04-10
Kernel version:4.4
※横に「RASPBIAN JESSIE LITE」というのもあるが、これはCUIのみ版らしい。

2.2. OSファイルをSDにコピー

SiliconLinuxの「DD for Windows」を利用してコピーする。
「DD for Windows」は下記からダウンロードして管理者権限で実行。
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows
f:id:sirasu55:20170607215254j:plain
①「対象ディスク」にSDを選択
②「対象ファイル」にダウンロードしたOSイメージファイルを選択
(今回は"2017-04-10-raspbian-jessie.img"。ファイル選択時"All files"設定が必要。)
③書込ボタンを押す(3回確認されるが全部「はい」)
書込が完了するまで待つ。

2.3. SSH接続用に一手間

2016-11-25の更新からデフォルトでSSHが無効になっているらしい。
有効にするために、OSファイル書込後のBootパーティションのルートに「SSH」というファイルを作成。
拡張子は無し。中身は空。「SSH.txt」では無いので注意。

3. インストール後初期設定

OSをインストールしたSDカードをラズパイにセット。
このセクションでは一旦、モニタ、キーボード、マウスを接続し、ラズパイ上で作業。

3.1. Localisation情報の変更

「左上Raspberry Piマーク -> preference -> Raspberry Pi Configureation」を選択。
Localisationタブから
①Localeを「ja(Japanese)」「JP(Japan)」「UTF-8」に設定
②TimeZoneを「Asia」「Tokyo」に設定
③Keyboardを「Japan -> Japanese」に設定
WiFi Countryを「JP Japan」に設定
①~④まで設定してOKを押すと、再起動を求められるので再起動する。

3.2. piユーザのパスワード変更

「左上Raspberry Piマーク -> 設定 -> Raspberry Pi の設定」を選択。
システムタブからパスワードを変更する
※piユーザのデフォルトパスワードは「raspberry」

3.3. wifi接続

右上の赤バッテン2つのアイコンから、接続先SSIDを選択し、パスワードを入力。
これだけで接続できる。

3.4. vimのインストー

今後の設定用に以下のコマンドでvimをインストール。

sudo apt-get update
sudo apt-get install vim

4. SSHで接続

ラズパイ上でIPアドレスの固定と確認を行い、Windows10機のTeraTermからSSHで接続する。

4.1. IPアドレスの固定

「/etc/dhcpcd.conf」に以下のように追記。

interface wlan0
# IP address
static ip_address=192.168.x.x
# Default Gateway
static routers=192.168.x.x
# DNS
static domain_name_servers=192.168.x.x

保存後再起動。

4.2. IPアドレスの確認

以下のコマンドを入力。

ifconfig

wlan0の「inetアドレス」を見て設定したIPアドレスであることを確認。

4.3. Tera TermからSSH接続

Windows10機上でTera Termを起動し、ラズパイに接続。

ホスト:(先程固定したラズパイのIPアドレス)
サービス:SSH
TCPポート:22

SSH認証はとりあえずpiユーザで、3.2で設定したパスワードを利用しログイン。
接続できれば完了。