« Re: BF2JS opimizing compiler | メイン | Collatz 予想 »
2006年07月11日
Movable Type をコマンドラインから操作する (トラックバックスパム一括削除)
数万件のトラックバックスパムが蓄積された結果、サイボウズ・ラボの Movable Type (3.2-ja-2) が機能不全を起こしていました注。管理画面から削除しようにも Internal Server Error が発生したりして、遅々として進みません。
そこで、コマンドラインからトラックバックスパムを一括削除するようなコードを書いて実行しました。
せっかく作ったということで、備忘録をかねてコードを公開したいと思います。コマンドラインから Movable Type を制御したいような場合の参考になるかもしれません (って、汎用的なコードになっているかは、かなり不安ですが...)。
#! /usr/bin/perl#
# Usage: MT_HOME=./mtspamclear.pl [ ]
#use strict;
use warnings;# setup
BEGIN {
if ($ENV{MT_HOME}) {
use lib ("$ENV{MT_HOME}/lib");
}
};
use MT::Bootstrap;
use MT;
use MT::TBPing;my $mt = MT->new() or die MT->errstr;
# do the work
if (scalar @ARGV != 0 && $ARGV[0] eq '-h') {
print STDERR "MT_HOME=mt_dir $0 [<blog_id>]\n";
exit 0;
}my $arg = {};
$arg->{junk_status} = -1;
$arg->{blog_id} = $ARGV[0] if scalar @ARGV != 0;my $iter = MT::TBPing->load_iter($arg);
my @list;
while (my $obj = $iter->()) {
push @list, $obj->id;
#last if scalar @list >= 100;
}$| = 1;
print STDERR "found " . scalar(@list) . " pings...\n";
foreach (@list) {
my $obj = MT::TBPing->load($_);
print STDERR ".";
$obj->remove;
}
print STDERR "\n";
トラックバックについては、 API が時代遅れになりつつあるという感が否めないですね。この点については、また別エントリで書きたいと思います。
注: 仮想プライベートサーバなのですが、一部機能がメモリ不足で使えなくなっていました。
投稿者 kazuho : 2006年07月11日 12:11
トラックバック
このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/692
コメント
奥 一穂さま
はじめまして。3.01D-jaを使っております。
トラックバックスパムが同様に大量に来てしまっておりまして、同様にInternal Server Errorになってにっちもさっちも行かない状態になっております。(サイト↓)
http://cardboard-house-painting.jp/mt/
プログラムとか全く分からないものなので、具体的に(トラックバックスパム一括削除)の方法を教えては頂けませんでしょうか。
どうか、どうか、宜しくお願い申し上げます。。。
武 盾一郎 拝
投稿者 武 盾一郎 : 2007年02月04日 20:04
たいへん心苦しいのですが、以下の理由によりお答えいたしかねます。ご理解のほど、よろしくお願いいたします。
・上掲のプログラムは、Movable Type が使用されている一般的な環境において実行できるものではないこと (コマンドラインからの操作が必要)
・お使いの Movable Type のバージョンと互換性があるか不明なこと
・お使いになったとして、問題が発生したとしてもフォローできないこと
投稿者 kazuho : 2007年02月07日 13:17
お返事有難うございます!
了解致しました。
なんだか、シロートが変な質問してしまってすいませんでした。。。
投稿者 武盾一郎 : 2007年02月12日 16:55