couriermlm:新規に作り直す

もとのmlディレクトリを残したまま新規に作る。あとでディレクトリごと上書きするればよい。(のでは)程度。
 
#!/usr/bin/python

import sys,os,commands
import shutil
import string
import re

MLM='/usr/bin/couriermlm'

PREFIX=''
DOMAIN=''
MLM_CREATE=''
MLM_SUB=''
MLM_LSUB=''

def check():
 global MLM_CREATE,MLM_SUB,MLM_LSUB,PREFIX,DOMAIN

 if 4 > len(sys.argv):
  print "Usage %s org-dir prefix domain " % (sys.argv[0])
  sys.exit(-1)
 PREFIX=sys.argv[2]
 DOMAIN=sys.argv[3]
 MLM_CREATE=MLM+' create %s ADDRESS='+PREFIX+'%s@'+DOMAIN
 MLM_SUB   ='echo | ' + MLM+' sub %s %s '
 MLM_LSUB  =MLM+' lsub %s '
 print MLM_CREATE

def clean(d):
  if os.path.isdir(d):
    shutil.rmtree(d)

def addrs(src):
  '''src:source directory of mailing list'''
  cmd = MLM_LSUB %(src)
  ret = commands.getoutput(cmd)
  ret = re.sub(r'\s\(.+\)','',ret)
  return string.split(ret,'\n')

def list_create(lname):
  cmd = MLM_CREATE % (lname,lname)
  print cmd
  os.system(cmd)

def list_add(lname,addr):
  cmd = MLM_SUB %(lname,addr)
  print cmd
  os.system(cmd)

def main():
  check()
  l = os.listdir(sys.argv[1])
  for x in l:
   org = "%s/%s" % ( sys.argv[1] , x )
   if not os.path.isdir(org) or not os.path.lexists(org+'/sublist'):
     continue
   
   dist ="%s/%s" % ( os.path.abspath('.'),x ) 
   if dist == org:
     continue

   clean(dist)
   list_create(x) 
   l = addrs(org)
   for a in l:
     list_add(x,a)
     
if __name__ == '__main__':
  main()
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中