Just another Windows perl site

perl の面白さ 5 net IP_adress and host_name

2018/02/04
 
この記事を書いている人 - WRITER -

・今、メールの自動?ダウンローダを作っています。
メールサーバは「IMAP」です。
スクリプトの要件は、
1)未読があれば
1-1)スパムであれば、「削除」
1-2)スパムで無ければ「保存」
2-1)たまには、「ゴミ箱の中を整理」・「送信済メールを保存・削除」
と、ここを自動化することです。とにかく、メールの未読さえなければ、仕事には支障がでません。。
送信の自動化は、サーバが分からないので、手?で実施します。。
[ad#wpx-01] 3-1)返信が必要な物は、メーラで返信(手)。
4-1)不要な物は、しばらくしてから、自動?削除。
・「車輪の再発明」[http://blog.yusuke.be/entry/2012/02/22/223527]にならないように、
あちこち探したが、結局、中々良い例が探せません。
しょうがないので、「無ければつくる」を実行しています。
・「パール使いは、使いまわしが信条?」なので、結構「パールニュース」なんかを見て、「使いまわしスクリプト」を探しています。
・ところで、当社の場合、メールサーバは社外に有ります。
社内には「プロクシー」がありますので、サーバの指定を「IP」で出来るか調べました。
普通?は[ping IP]又は[ping ホスト名]で調べます。
今回は、「IPからホスト名を検索するスクリプト」と「ホスト名からIPを検索するスクリプト」でも調べました。
スクリプトは下記のとおりです。簡単でしょ!
# ここから 「ホスト名からIPを検索する」————
#!c:\perl\bin\perl # windows perl の場合
use Socket;
my $host = ‘google.co.jp’;
my ($name, $aliases, $addrtype, $length, @ipaddr) = gethostbyname($host);
foreach (@ipaddr) {
my $address = join ‘.’, unpack(‘C4’, $_);
print “address[$address]\n”;
}
print “end”;;
# ここまで ————————————–
# ここから 「IPからホスト名を検索する」————
#!c:\perl\bin\perl
my $ip_ad = “203.49.208.183”;
my $host_name = GetHostByAddr($ip_ad);
print “ホスト名は[$host_name]です。”;
print “end”;;
# sub ———————————
sub GetHostByAddr {
my ($ip) = @_; print “ip[$ip]”;;
my @addr = split(/\./, $ip);
my $packed_ip = pack(“C4”, $addr[0], $addr[1], $addr[2], $addr[3]);
my ($name) = gethostbyaddr($packed_ip, 2);
return $name;
}
# ここまで ————————————–
・スクリプトを書く場合、プログラム言語のコマンドのみならず、例えば「ネットの仕組み」何んかも知らないと結構苦労します。
こういうスクリプトがサンプルで最初から有ると、重宝します。
・今回作成している、「メールの自動ダウンローダ」はperl のモジュールで [use Net::IMAP::Client;][use MIME::Parser;]等を使っています。
一番?はまった所は、「未読メッセージID」の取得でした。
[use Net::IMAP::Client;]で、その例が探しきれなかったのですが、
[$msg_id = $imap->search->{unseen};] [@msg_id = @$msg_id;] で、無事?乗り切れました。。。
・あと2~3日で完成できるかなぁ??
[ad#wpx-01]

この記事を書いている人 - WRITER -

- Comments -

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Copyright© 仕事の進め方の効率化ブログ , 2016 All Rights Reserved.