Golfreeze.packetlove.com: Life style of Golfreeze Canon400D Family kammtan.com Jazz Freebsd Unix Linux System Admin guitar Music
All about unix linux freebsd and FAQ for Packetlove.com Web hosting , Mail hosting , VoIP + IP PBX server => command , shell script ,tool , crontab => Topic started by: golfreeze on มีนาคม 30, 2011, 04:31:02 pm
-
#### Script php ช่วย generate ldif file ใช้ในการ import ข้อมูลเข้า ldap server ครับ ####
ก่อนจะใช้ script นี้ควรเตรียมไฟล์ข้อมูลให้เสร็จก่อนนะครับ
แล้วทำการใช้โปรแกรม navicat ช่วยอิมพอต ไฟล์ข้อมูลที่เตรียมไว้แล้ว ใส่ฐานข้อมูลแล้วให้ สคิปนี้ ช่วย generate อีกทีนะครัย
cherry# less get_data_to_ldap.php
<?php
//Connect confiG
$host = "localhost";
$rootadmin = "root";
$rootpassword = "zzzzz";
$dbname = "new_mail2";
//Connect
$link=mysql_connect($host,$rootadmin,$rootpassword) or die (mysql_error());
$select=mysql_select_db($dbname) or die (mysql_error());
// Query for table 'mailbox'
//$sqlgu="SELECT username, password, name, maildir, quota, domain FROM mailbox";
//Query for table 'new_mail'
$sqlgu="SELECT mail, password, CN, SN, mailautoreply, mailbox, quota, domain, username FROM new_mail";
$db_query=mysql_db_query($dbname,$sqlgu) or die(mysql_error());
$num_rows=mysql_num_rows($db_query);
$a=0;
while($a < $num_rows )
{
$result = mysql_fetch_array($db_query);
$mail=$result[mail];
$password=$result[password];
$CN=$result[CN];
$SN=$result[SN];
$mailbox=$result[mailbox];
$quota=$result[quota];
$domain=$result[domain];
$username=$result[username];
$mailautoreply=$result[mailautoreply];
$password_hash = '';
$md5_hash = md5($password);
for ( $i = 0; $i < 32; $i += 2 )
$password_hash .= chr( hexdec( $md5_hash{ $i + 1 } ) + hexdec( $md5_hash{ $i } ) * 16 );
$password_hash = '{MD5}'.base64_encode($password_hash);
#$md5pass=md5($password);
echo "dn: mail=$mail,vd=$domain,o=hosting,dc=xxx,dc=xxx,dc=th\n";
echo "objectClass: top\n";
echo "objectClass: VirtualMailAccount\n";
echo "objectClass: Vacation\n";
echo "objectClass: VirtualForward\n";
echo "objectClass: amavisAccount\n";
echo "mail: $mail\n";
echo "userPassword: $password_hash\n";
echo "cn: $CN\n";
echo "sn: $SN\n";
echo "smtpAuth: TRUE\n";
echo "quota: $quota\n";
echo "accountActive: TRUE\n";
echo "vdHome: /mbox\n";
echo "mailbox: $mailbox\n";
echo "uid: $username\n";
echo "mailAutoreply: $mailautoreply\n";
echo "delete: FALSE\n";
echo "otherTransport: phamm:\n";
echo "forwardActive: FALSE\n";
echo "amavisBypassVirusChecks: FALSE\n";
echo "amavisBypassSpamChecks: FALSE\n";
echo "amavisSpamKillLevel: 6.0\n";
echo "amavisSpamTag2Level: 6.0\n";
echo "amavisSpamTagLevel: 6.0\n";
echo "creationDate: 20101013\n";
echo "lastChange: 1225772978\n";
echo "vacationActive: FALSE\n";
echo "\n";
echo "\n";
$a++;
}
//echo "<center><br> All Record = $num_rows</center>";
mysql_close();
?>
-
วิธีรัน ก็ง่ายๆ ครับ
#php less get_data_to_ldap.php > ldif_file.ldif
ก็จะได้ ldif_file.ldif เพื่อไป import ครับผม
-
พอได้ไฟล์ ldif แล้วนำมา add ลงเครื่อง ldap server โดยสคิปอีกทีครับผม
#/home/script#less ldap_add.sh
##### Begin script #####
#!/bin/sh
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
export PATH
##LDAP ADD Script
dateX=`date "+%Y%m%d"`
LDIFP="/home/add_user"
SRC="news_mail_ldif_local_20100401.txt"
LDIF="/home/add_user/ldif_file.ldif"
LDAPPASS="ปปปปป"
BASE="o=hosting,dc=xxx,dc=yyy,dc=com"
BINDDN="cn=admin,dc=xxx,dc=yyy,dc=com"
HOST="localhost"
ldapadd -h $HOST -D "$BINDDN" -w "$LDAPPASS" -a -f $LDIF > ${LDIFP}/${SRC}
CHECK_USER=`less ${LDIFP}/${SRC} | grep 'o=hosting' | wc -l`
echo "All user = ${CHECK_USER}"
##### End script #####
เมื่อรันเสร็จแล้ว ไม่มี error เกิดขึ้น ก็แสดงว่า import ข้อมูลเข้า ldap server ได้เรียบร้อยครับผม
-
สำหรับ shell ที่เป็น linux นะครับ
##### Begin of script ######
#!/bin/bash
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin
export PATH
##LDAP ADD Script
dateX=`date "+%Y%m%d"`
LDIFP="/home/golf/add_user"
SRC="news_mail_ldif_local_20100401.txt"
LDIF="/home/golf/add_user/ldif_local_20100401.ldif"
LDAPPASS="ปิดปิดปิด"
BASE="o=hosting,dc=xxx,dc=net,dc=xx"
BINDDN="cn=Directory admin,dc=xxx,dc=net,dc=xx"
HOST="ldap00.xxx.net.xx"
##Keep log for checking
ldapadd -h $HOST -D "$BINDDN" -w "$LDAPPASS" -x -f $LDIF > ${LDIFP}${SRC}
##Count account for adding process
CHECK_USER=`less ${LDIFP}/${SRC} | grep 'o=hosting' | wc -l`
echo "All user = ${CHECK_USER}"
##### End of script ######
-
#### command ที่ใช้ในการ ldapmodify ครับ
#ldapmodify -h "localhost" -D "cn=admin,dc=xxx,dc=yyy,dc=com" -w "xxxx" -x -f /home/ldapadd/add.ldif
### command ที่ใช้ในการ Ldapsearch ครับ
ldapsearch_nowrap -L -r -x -h "localhost" -D "cn=admin,dc=xxx,dc=yyy,dc=com" -w "xxxx" -b "o=hosting,dc=xxx,dc=yyy,dc=com" "(mail=golf@test.local)" vacationStart vacationEnd
ldapsearch -L -x -h "localhost" -D "cn=admin,dc=xxx,dc=yyy,dc=com" -w "xxxx" -b "o=hosting,dc=xxx,dc=yyy,dc=com" "(mail=golf@test.local)" vacationStart vacationEnd
###Use mozldap for use parameter "nowrap"
/usr/lib64/mozldap/ldapsearch -L -x -T -h "localhost" -D "cn=admin,dc=xxx,dc=yyy,dc=com" -w "xxxx" -b "o=hosting,dc=xxx,dc=yyy,dc=com" "(mail=golf@test.local)" vacationStart vacationEnd
ลองดูนะครับผม : )