#!/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 を参照。 ファイルハンドルとは、オープンしているサーバ上のファイルを指し示すためにクライアント側が持っている識別子のことです。 その識別子が指し示しているファイルがサーバ上で無くなってしまったり、アクセスできなかったりした...
-
※MAC-VLAN登録変更の際に必要な場合があるため 1. 認証されているスイッチを確認 $ grep xxxxxxxxxxxx /var/log/radius/radius.log Mon Feb 21 14:05:58 2011 : Auth: Login OK: [xxx...
-
前 のは処理がスマートでないのと、値1、値2を複数埋め込む必要があったのとで、改良 mailsend.py #!/usr/bin/env python #coding: utf-8 # CSVからメール送信スクリプト # Ver 1.5 わたり 2013.07.09 # 使い...
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。