はじめに
マレーシアって結構電化製品が高いんです。また製品もちょっと古いんですよね。
マレーシアで固定のインターネットを契約すると、ルーターもセットにはなっているんですが、これがまた本当に遅い・・・。せっかくの高速回線も、このルーターで速度が落ちているって感じです。
それでウチでは、安いルータを日本でAmazonで買ってきて、使っています。
うちが使っているのはコレです。
しかし2年でこれも調子がおかしくなってきました。時々、再起動してあげないといけない病気です。
高性能なルーターだと自動再起動設定があったりしますが、さすが安物なので、ありません。
ということで、パパっと作ってしまいましょう。
今回は24時間稼働しているラズパイを使いたいと思います。
ラズパイに関しては、以下の記事を参照してください。
作り方
node.jsにあるスクレイピングに使用する「puppeteer」を使用します。
※SSHで接続している事を前提で進めて行きます。もし繋ぎ方が分からない方は、下記のページを参考にしてください。
1.プログラムを準備します。
sudo nano rebootRouter.js
//=====ライブラリ読み込み===== const puppeteer = require('puppeteer'); const fs = require('fs'); //=====メイン処理===== (async function(){ const browser = await puppeteer.launch(); const page = await browser.newPage(); try { await page.goto('http://192.168.0.1/'); await page.type('#userName', 'admin'); await page.type('#pcPassword', 'admin'); await page.click('#loginBtnText'); await page.waitFor(3000); const frame1 = page.frames()[2]; await frame1.click('#menu_tools'); await frame1.click('#menu_restart'); await page.waitFor(3000); const frame2 = page.frames()[3]; frame2.click('#button_reboot'); page.on('dialog', dialog => { console.log("dialog"); dialog.accept(); }); await page.waitFor(10000); errflg = 0; }catch(err){ console.log(err.name + ': ' + err.message); } await browser.close(); })();
2.後は自動起動するようにスケジューラに設定します。
下記の例では、毎日深夜0時に自動的にプログラムが呼ばれるように設定しています。
sudo nano /etc/crontab
0 0 * * * pi node /home/pi/scraping/rebootRouter.js
まとめ
ほとんどプログラム公開だけになってしまいましたが、もし同じ症状に悩まされている人は使ってみてください。
わたしも新しいルーターは欲しい所ですが、まだ動くのにもったいないので、これを使ってもう少し様子を見てみようかと思っています。
今回、自動再起動をする為に 「puppeteer」 を使っていますが、これを使うと色んな事が簡単に出来ます。
また機会があれば、これを使った色々なハックを紹介できればと思います。