はじめに
マレーシアって結構電化製品が高いんです。また製品もちょっと古いんですよね。
マレーシアで固定のインターネットを契約すると、ルーターもセットにはなっているんですが、これがまた本当に遅い・・・。せっかくの高速回線も、このルーターで速度が落ちているって感じです。
それでウチでは、安いルータを日本で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」 を使っていますが、これを使うと色んな事が簡単に出来ます。
また機会があれば、これを使った色々なハックを紹介できればと思います。