igenus用戶申請/刪除的shell腳本
發表于:2007-05-25來源:作者:點擊數:
標簽:
我最早是用wxy先生寫的postfix+。。。。那篇文章建立的mailserver,但是imp改動起來不是一般的難,因為每句html代碼都是用print方式來寫的,看著很費力,改動也不方便。后來參照docn先生的文章,采用sqwebmail來做webmail,但是因為當時沒有能夠解決中文名附
我最早是用wxy先生寫的postfix+。。。。 那篇文章建立的mail server,但是imp改動起來不是一般的難,因為每句html代碼都是用print方式來寫的,看著很費力,改動也不方便。后來參照docn先生的文章,采用sqwebmail來做webmail,但是因為當時沒有能夠解決中文名附件的問題,所以我改用了igenus來做webmail部分。 因為沒有使用vpopmail,所以在管理用戶的時候不太方便,正好我初學shell,就寫了添加/刪除用戶的兩個shell來練手。本著共享的精神以及請各位大蝦指教我的shell編寫,我把我寫的shell腳本發布出來。因為是針對docn修改后的igenus,而且我自己也略微修改了一些部分,所以可能不能直接套用。我把shell的每個部分都加上了注釋,希望能幫助各位朋友看懂。
addmailuser
[code:1:c6ab2a9532]
#!/bin/sh
#配置某些參數
uid=12345 #It's postfix's uid
gid=12345 #It's postfix's gid
imapok=1 #Default allow imap
quota=5000000 # It's value equal to postfix's /etc/main.cf : virtual_mailbox_limit
#Mysql的控制權限
mysql_name=用戶名
myrsql_password=密碼
echo 'Enter user name:'
read name
if [ "$name" = "" ]; then
echo 'Must input name!'
exit
fi
echo 'Enter user password:[123456]' #如果不輸入密碼直接回車,則默認密碼為123456
read password
if [ "$password" = "" ]; then
password=123456
fi
echo 'Enter user domain:[mail.xx.cn]' #填寫domain,默認為mail.xx.cn
read domain
if [ "$domain" = "" ]; then
domain=mail.xx.cn
fi
echo 'Enter user home:[/var/mail/]' #mail用戶的home目錄,默認為/var/mail/
read home
if [ "$home" = "" ]; then
home=/var/mail/
fi
echo 'Enter user maildir:['$domain'/'$name'/Maildir/]' #maildir目錄
read maildir
if [ "$maildir" = "" ]; then
maildir=$domain/$name/Maildir/
fi
echo 'Enter user nickname:' #匿稱,如不輸入則和用戶名相同
read nickname
if [ "$nickname" = ""]; then
nickname=$name
fi
#設置id,添加時間等
id=$name@$domain
date_add=`date +20%y-%m-%d`
time_add=`date +%H:%M:%S`
#全部顯示一次上面的參數設置,好核對有寫錯沒
echo 'id= '$id
echo 'name= '$name
echo 'password= '$password
echo 'domain= '$domain
echo 'home= '$home
echo 'maildir= '$maildir
echo 'nickname= '$nickname
echo 'imapok= '$imapok
echo 'date_add= '$date_add
echo 'time_add= '$time_add
echo 'quota= '$quota
#選擇確認添加與否
echo "if under value is right,please input 'y' and Enter:"
read mychoice
if [ "$mychoice" = "y" ]; then
echo "use mail;" > tmp_addmailuser.sql #將sql命令寫到一個臨時文件內。。。主要是我菜,不曉得怎么一次用重定向搞定,還有就是這樣寫調試的時候方便一些
echo "INSERT INTO virtual_users (id,home,password,maildir,date_add,time_add,domain,name,uid,gid,imapok,quota,
pw_gecos) VALUES ('"$id"','"$home"',encrypt('"$password"'),'"$maildir"','"$date_add"','"$time_add"','"$domain"'
,'"$name"',"$uid","$gid","$imapok","$quota",'"$nickname"');" >> tmp_addmailuser.sql #將sql語句也寫進去,這個記得根據自己的
數據庫名和字段改哦?。?!
mysql -u$mysql_name -p$mysql_password < tmp_addmailuser.sql #執行
rm -rf tmp_addmailuser.sql #刪除臨時文件
#下面的語句是建立目錄和修改目錄權限以及所有者。。。
MailUserDir=$home$domain/$name
mkdir -p $MailUserDir
/usr/lib/courier-imap/bin/maildirmake $MailUserDir/Maildir
/usr/lib/courier-imap/bin/maildirmake -q $quota"S" $MailUserDir/Maildir
chmod -R 700 $MailUserDir
chown -R postfix:postfix $MailUserDir
else
exit
fi
[/code:1:c6ab2a9532]
下面的是刪除用戶的,因為不少地方跟上面的相似,我就只注釋關鍵的地方咯
delmailuser
[code:1:c6ab2a9532]
#!/bin/sh
#配置某些參數
uid=12345 #It's postfix's uid
gid=12345 #It's postfix's gid
imapok=1 #Default allow imap
quota=5000000 # It's value equal to postfix's /etc/main.cf : virtual_mailbox_limit
#Mysql的控制權限
mysql_name=用戶名
myrsql_password=密碼
echo 'Enter user name:'
read name
if [ "$name" = "" ]; then
echo 'Must input name!'
exit
fi
echo 'Enter user domain:[mail.xx.cn]'
read domain
if [ "$domain" = "" ]; then
domain=mail.xx.cn
fi
id=$name@$domain
echo "use mail;" > tmp_delmailuser.sql
echo "select id,home,maildir,name,pw_gecos from virtual_users where (id='"$id"' and name='"$name"' and domain
='"$domain"');" >> tmp_delmailuser.sql #將sql語句放到臨時的文件內
mysql -u$mysql_name -p$mysql_password < tmp_delmailuser.sql | grep $id > tmp_delmailuser #從臨時文件中執行sql語句,并把得到的記錄中取得tmp_delmailuser文件內
home=`awk '{ print $2 }' tmp_delmailuser`
maildir=`awk '{ print $3 }' tmp_delmailuser`
nickname=`awk '{ print $5 }' tmp_delmailuser` #把各個需要的字段取出來,這里大家一定要根據自己的mysql的數據庫的字段來修改哦
rm -rf tmp_delmailuser #刪除臨時文件
if [ "$home" = ""]; then
echo "No $name in $domain , please check and input again."
rm -rf tmp_delmailuser.sql
exit
fi #如果沒有取到記錄時候的處理
echo 'id= '$id
echo 'name= '$name
echo 'domain= '$domain
echo 'home= '$home
echo 'maildir= '$maildir
echo 'nickname= '$nickname
#顯示取得的記錄的資料到屏幕上
echo "if under value is right,please input 'y' and Enter:"
read mychoice
#是否確認要刪除它
if [ "$mychoice" = "y" ]; then
echo "use mail;" > tmp_delmailuser.sql
echo "delete from virtual_users where (id='"$id"' and name='"$name"' and domain='"$domain"');" >> tmp_delmailuser.sql
mysql -u$mysql_name -p$mysql_password < tmp_delmailuser.sql
rm -rf tmp_delmailuser.sql
MailUserDir=$home$domain/$name
rm -rf $MailUserDir #刪除該條數據庫記錄和相應的用戶目錄
else
exit
fi
[/code:1:c6ab2a9532]
以上的shell寫的比較繁瑣,但是思路很簡單,希望能幫助到各位,也請各位提出意見和幫助完善后可以給我一份.
bsdxp 回復于:2003-07-07 09:43:14
|
好同志,辛苦啦。
|
bhuang 回復于:2003-07-07 09:46:39
|
docn修改后的igenus能共享一下嗎?
|
skylove 回復于:2003-07-07 10:09:47
|
能呀,我在另外有個帖子內發了地址的
http://218.6.128.194/igenus_docn.tar.gz
|
gadfly 回復于:2003-07-07 10:18:05
|
建議用code 標簽把腳本框起來
|
skylove 回復于:2003-07-07 10:40:04
|
不好意思,以前我沒用過這些,所以不太懂。已經改正了
|
paulwang 回復于:2004-05-20 11:21:38
|
[quota]
encrypt('"$password"'),
[/quota]
可以直接調用這個函數嗎?我的為什么不行???
|
skylove 回復于:2004-08-20 12:12:35
|
可以的啊
|
原文轉自:http://www.kjueaiud.com
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
|