- 2012-02-04 (土) 23:21
- コンピュータ
前々回(ネット環境の更新 その1)
前回(ネット環境の更新 その2)の続き。
前回、佳境と書いた、
perlモジュール「WWW::mechanize」の話し。
何かと言うと”perlでウェブブラウジングしましょ”と言う話。
WWW::Mechanize – search.cpan.orgによる V1.72 の概要を引用すると
SYNOPSIS
WWW::Mechanize, or Mech for short, is a Perl module for stateful programmatic web browsing, used for automating interaction with websites.Features include:
- All HTTP methods
- High-level hyperlink and HTML form support, without having to parse HTML yourself
- SSL support
- Automatic cookies
- Custom HTTP headers
- Automatic handling of redirections
- Proxies
- HTTP authentication
Mech supports performing a sequence of page fetches including following links and submitting forms. Each fetched page is parsed and its links and forms are extracted. A link or a form can be selected, form fields can be filled and the next page can be fetched. Mech also stores a history of the URLs you’ve visited, which can be queried and revisited.
冒頭部分を訳してみる、
概要
WW::Mechanize、またはMechは、ウェブサイトとの相互的なやり取りの自動化を目的としたステートフルなプログラムによって、Webブラウジングを実現するためのPerlモジュールです。
拙い直訳で申し訳ないが、そういう事。
噛み砕いて言えば、Perlで書いたスクリプトによって、サイトへのログインや、チェックボックス、ボタンのクリック等の対話的処理を、自動的に行う事ができるPerlモジュールと考えていただきたい。
ただし、普通のホスティングサービスに標準でインストールされているものではないと思うので、管理者にインストールを要請するか、ホームディレクトリに自分でインストールする必要があると思う。
その辺りは、”CPAN install WWW::Mechanize”等で検索すれば、色々わかりやすいサイトが引っ掛かるはずなので、ここでは割愛する。
っで、何をするのかと言うと、さくらのサーバから自宅のルータにログインして、
ルータの機能であるwolを実行するということ。
つまり、WR9500Nにログインしてマジックパケットを発行するcgiを叩くスクリプトがこれ。
#!/usr/local/bin/perl
package K;
use strict;
use warnings;
use lib ‘ホスティングサービスに設定したパールlibへのパス/’;
use WWW::Mechanize;
my $mech = new WWW::Mechanize;
my $user_name = “ユーザー名”;
my $password = “パスワード”;
$mech->credentials(‘自分のドメイン:WOL用のポート番号’,’Aterm’,$user_name,$password );
$mech->get(“http://自分のドメイン:WOL用のポート番号”);
$mech->click();
当然、PCリモート起動機能は「する」のチェックをしてルータの設定を済ませておく必要がある。
自宅のネットワークには、独自ドメインを設定しているので、そのように書いている。
自分が管理するドメインをお持ちでない方は、NECが無償で提供する「ホームIPロケーション機能」サービスを利用することにより、同様の結果を実現できるのでご安心あれ。
私の場合、このPerlスクリプトを、さくらのcronに登録し、決めた時間に自動的に実行する。
先にも申し上げたが、我が家のサーバは、デフォルトで電源を落としている。
今回、このスクリプトを利用して、定期的にサーバの電源を入れる仕組みを構築した。
何のために?
それは、サーバ内に設定した別のスクリプトで、サーマルラジオを録音するためだったりする。
電源の落ちたサーバーは、自身の電源投入ができないからこのような持って回った方法をとった。
3回にわたって、どうでもいいエントリーが続いたが、ひとまずこれで終わりにする。