#!/usr/bin/perl
# Domain not found 通知スクリプト
# 2010.12.08 watari perl版 Ver.0.5
# 元々あった shell スクリプト版を元に
# 2重のドメイン検査及び、メーリングリストの
# 特定を盛り込む
# おまじない
use POSIX 'strftime';
# お約束
## Mailman コマンド
$findmember = "/path/to/mailman/bin/find_member";
$listowners = "/path/to/mailman/bin/list_owners";
## メール関連
$testmailaddr = "watari\@hogefuga";
$subject = "=?ISO-2022-JP?B?GyRCJWEhPCVqJXMlMCVqJTklSEdbQXclKCVpITxETENOGyhC?=";
## ログファイル
$logfile = "/path/to/mailman/logs/domain_errori_test";
## 一時ファイル
$tmpdata = "/tmp/den_tmp.data_test";
## smtp-failure
$errlog = "/path/to/mailman/logs/smtp-failure-test";
#$errlog = "/path/to/mailman/logs/smtp-failure";
## smtp
#$oklog = "/path/to/mailman/logs/smtp-test";
# 日付の準備
## 前日は time から 86400 を引く。
## その他の日は、 日数 x 86400 を引く。
###$ltime = time-86400;
## (検証用)
##日数の指定
$datecounts = 9;
#$datecounts = 1;
$ltime = time-(86400*${datecounts});
## 引っ掛けるログの対象日付
$taisho = strftime "%b %d", localtime($ltime);
$taisho2 = strftime "%b %d", localtime(time);
## 力技処理。実行時 (LANG=C; ./このスクリプト) で不要だが。
%month = (
" 1月" => "Jan", " 2月" => "Feb", " 3月" => "Mar", " 4月" => "Apr",
" 5月" => "May", " 6月" => "Jun", " 7月" => "Jul", " 8月" => "Aug",
" 9月" => "Sep", "10月" => "Oct", "11月" => "Nov", "12月" => "Dec"
);
while ( my ( $key, $value ) = each ( %month ) ) {
$taisho =~ s/$key/$value/g;
$taisho2 =~ s/$key/$value/g;
}
## uniq 処理サブルーチン
## &f_uniq(元配列名,処理後配列名);
sub f_uniq {
@sortedlines = sort @{$_[0]};
if ( $sortedlines[0] =~ /.+/ ) {
push(@{$_[1]}, $sortedlines[0]);
for ( $i = 1; $i < @sortedlines; $i++ ) {
if ( $sortedlines[$i] ne $sortedlines[$i-1]) {
push(@{$_[1]}, $sortedlines[$i]);
}
}
}
}
# お仕事開始
## Domain not found のエラー抽出
open(SMTPERR, "< $errlog") || die "Error: $errlog \n";
while() {
chomp;
# 該当メールアドレスの抽出
if ( $_ =~ /$taisho/ && $_ =~ /Domain not found/ && $_ =~ /refused/ ) {
@array = split( / +/, $_);
$array[11] =~ s/<|>://g;
if ( $array[11] !~ /^[^@]+@[^.]+\..+/ ) {
print "$array[11] は、メールアドレスではありません。作業を中止します。\n";
exit(1);
} else {
$array[19] =~ s/<|>//g;
@ml_tmp = split( /\./, $array[19] );
$ml_tmp[4] =~ s/\@cc//g;
if ( $ml_tmp[4] !~ /^[a-z][a-z|0-9]*\-[a-z|0-9]+/ ) {
print "$ml_tmp[4] は、正しいメーリングリスト名ではありません。作業を中止します。\n";
exit(1);
} else {
push(@errml ???????
2010年12月16日木曜日
2次元配列を使用したテスト.pl
登録:
コメントの投稿 (Atom)
DNS named.root 更新確認スクリプト
#!/bin/bash # DNSのnamed.rootファイルの更新確認スクリプト # 最新版のnamed.rootファイルを取得し、差分を確認する。 # 更新履歴 # 2014.02.07 watari # お約束 export LANG=C ## 実行ディレクトリ #PR...
-
fj.os.linux/japan.comp.linux を参照。 ファイルハンドルとは、オープンしているサーバ上のファイルを指し示すためにクライアント側が持っている識別子のことです。 その識別子が指し示しているファイルがサーバ上で無くなってしまったり、アクセスできなかったりした...
-
前回のスクリプトから、さらに機能追加して、壁紙ディレクトリを選択できるように改良した。 (しかもGUIで可能!) $ vi /usr/local/bin/wpchange #!/bin/bash # wallpaper changer # 2014.01.25 ver 1.0 w...
-
#!/bin/bash # DNSのnamed.rootファイルの更新確認スクリプト # 最新版のnamed.rootファイルを取得し、差分を確認する。 # 更新履歴 # 2014.02.07 watari # お約束 export LANG=C ## 実行ディレクトリ #PR...
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。