#!/usr/bin/perl # $Id: list-lists.pl,v 1.4 2004/07/01 19:12:55 spork Exp $ # quick script to list all mailman lists and give a # subscriber count for each $mailman_bin = "/usr/local/mailman/bin"; $lists_prog = "$mailman_bin/list_lists"; $members_prog = "$mailman_bin/list_members"; $owners_prog = "$mailman_bin/list_owners"; $mail_recip = "someone\@somewhere.net"; $mail_from = "someone\@somewhere.net"; $logfile = "/usr/local/adm/data/mailman-report.log"; $now = localtime; open(LISTS, "$lists_prog -b |"); while () { chomp; push(@lists,$_); } close LISTS; format MAIL_TOP = This monthly report shows how many subscribers each hosted list is using, who owns the list, and the list name. Subscribers List Owner List Name ----------- ---------- --------- . format LOG_TOP = Subscribers List Owner List Name ----------- ---------- --------- . format MAIL = @<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<< $member_count, $owner, $list . format LOG = @<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<< $member_count, $owner, $list . open(LOG, ">> $logfile") || die "Can't open log for writing\n"; print LOG "report for $now\n\n"; open(MAIL, "| /usr/sbin/sendmail -f $mail_from $mail_recip"); print MAIL "To: $mail_recip\nSubject: Monthly Mailing List Report\n"; while (<@lists>) { $list = $_; $member_count = 0; open(OWNERS, "$owners_prog $list |"); $owner = ; chomp($owner); close OWNERS; open(MEMBERS, "$members_prog $list |"); while () { $member_count++; } close MEMBERS; write MAIL; write LOG; #print "$member_count\t\t$owner\t\t$list\n"; } print LOG "\nEND\n\n"; close MAIL; close LOG;