Guest Blog

Aller au contenu | Aller au menu | Aller à la recherche

mardi, octobre 19 2010

Automatiser la création de compte mail V2

si vous avez suivi mes précedents billets dont ceux pour la mise en place d'un serveur de mail ici et celui pour l'automatisation de création d'une boite mail ici . Le précedent script n'était pas totalement automatisé ceci à été corrigé dans cette version.
D'autres améliorations sont à prévoir ... N'hésitez pas à me faire un petit retour ;)

  1. /*
  2. #!/bin/bash
  3. user=db_user
  4. db=db_name
  5. pass=password
  6. uid=5000
  7. gid=5000
  8. home=/var/vmail/%d/%n
  9. quotauser=100000
  10. grep=/bin/grep
  11.  
  12. usage ()
  13. {
  14. echo "Usage :syntaxe : $0 [options]
  15. --create Create User
  16. --delete Delete User
  17. --print Print user
  18. --check check if user exist in the databases
  19. Exemple : $0 --create user@domain:100000 "
  20. exit 1
  21. }
  22.  
  23. #Function create user
  24. createuser()
  25. {
  26. domain_id=`echo "SELECT id from virtual_domains where name LIKE '"$domainame"' "| mysql -u "$user" -p"$pass" "$db" |tail -n 1`
  27. email=`echo "$1" | cut -d : -f 1 `
  28. quota=`echo "$1" | cut -d : -f 2`
  29. quotatest=`echo "$quota" | "$grep" [^[0-9] |wc -l`
  30.  
  31. if [ "$quotatest" -ge 1 ]
  32. then
  33. quota="$quotauser"
  34. fi
  35.  
  36. passuser=$(apg -m 10 |head -n 1)
  37. create=`echo "INSERT INTO virtual_users (id,domain_id,password,email,quota_kb,quota_messages,gid,uid,home) VALUES (NULL,"$domain_id",MD5('"$passuser"'),'"$email"',"$quota","0","$gid","$uid",'"$home"')" | mysql -u "$user" -p"$pass" "$db" `
  38.  
  39. echo "Les identifiants sont les suivants "$email" : "$passuser""
  40.  
  41. }
  42.  
  43. #Function delete user
  44. deleteuser()
  45. {
  46. delete=`echo "DELETE FROM virtual_users WHERE email='"$1"'" | mysql -u "$user" -p"$pass" "$db"`
  47. }
  48.  
  49. #Print User
  50. printuser()
  51. {
  52. print=`echo "select email, domain_id FROM virtual_users where email='"$1"'" | mysql -u "$user" -p"$pass" "$db"`
  53. numberline=`echo "$print" | wc -l `
  54.  
  55. if [ "$numberline" -eq 1 ]
  56. then
  57. echo "User does not exist "
  58. else
  59. echo "$print"
  60. fi
  61. }
  62. #Function create domain if not exist
  63. checkdomain()
  64. {
  65. domainame=`echo "$1" |cut -d @ -f 2|cut -d : -f 1`
  66.  
  67. checkdom=`echo "SELECT name from virtual_domains where name LIKE '"$domainame"' "| mysql -u "$user" -p"$pass" "$db" `
  68. numberlinedom=`echo "${checkdom}" | wc -l `
  69.  
  70. if [ "$numberlinedom" -eq 1 ]
  71. then
  72. echo "Domain doesn't exist "
  73. read -p "Can you create this domain "$domainame" yes or no ? " answer
  74.  
  75. case "$answer" in
  76. yes)
  77. createdomain=`echo "INSERT INTO virtual_domains (id,name) VALUES (NULL,'"$domainame"')" | mysql -u "$user" -p"$pass" "$db" `
  78. ;;
  79. no)
  80. echo "The domain "$domainame" do not created"
  81. exit 0
  82. ;;
  83. *)
  84. echo "This option doesn't exit"
  85. checkdomain "$1"
  86. ;;
  87. esac
  88. fi
  89. }
  90.  
  91. upquota()
  92. {
  93. #E for Email equota use know user for request updatequota
  94. equota=`echo "$1" | cut -d : -f 1`
  95. upquotas=`echo "$1" | cut -d : -f 2`
  96.  
  97. updatequota=`echo "UPDATE virtual_users SET quota_kb="$upquotas" WHERE email='"$equota"' LIMIT 1 "| mysql -u "$user" -p"$pass" "$db"`
  98. }
  99.  
  100. compt=0
  101. case "$1" in
  102.  
  103. --print)
  104. shift
  105. printuser "$1"
  106. ;;
  107. --create)
  108.  
  109. args=`expr "$#" - 1 `
  110. while [ "$compt" -lt "$args" ] ;
  111. do
  112. shift
  113. checkdomain "$1"
  114. createuser "$1"
  115. compt=`expr "$compt" + 1 `
  116. done
  117. ;;
  118. --delete)
  119. args=`expr "$#" - 1 `
  120. while [ "$compt" -lt "$args" ] ;
  121. do
  122. shift
  123. deleteuser "$1"
  124. compt=`expr "$compt" + 1 `
  125. done
  126. ;;
  127.  
  128. --upquota)
  129. args=`expr "$#" - 1 `
  130. while [ "$compt" -lt "$args" ] ;
  131. do
  132. shift
  133. upquota "$1"
  134. compt=`expr "$compt" + 1 `
  135. done
  136. ;;
  137.  
  138. *)
  139. usage
  140. ;;
  141. esac
  142.  
  143. */

mardi, juillet 27 2010

Automatisation création de compte mail dans mysql

Je me lance dans le scripting car en tant que sysadmin il est important d'être fainéant (chuttt) . Alors si vous avez suivi mes précédents billets ici et ici .
La création des utilisateurs ne se fait pas de façon automatique. Avec ce petit script on pourra se reposer (du moins faire autres choses).

  1. /*
  2. #!/bin/bash
  3. user=db_user
  4. db=db_name
  5. pass=our_password
  6. uid=5000
  7. gid=5000
  8. home=/var/vmail/%d/%n
  9.  
  10. usage ()
  11. {
  12. echo "Usage :syntaxe : $0 [options]
  13. --create Create User
  14. --delete Delete User
  15. --print Print user
  16. exit 1
  17. }
  18.  
  19. #Function create user
  20. createuser()
  21. {
  22. read -p "Enter the domain_id : " domain_id
  23. read -p "Enter quota user : " quotauser
  24. email="$1"
  25. passuser=$(apg -m 10 |head -n 1)
  26.  
  27. create=`echo "INSERT INTO virtual_users (id,domain_id,password,email,quota_kb,quota_messages,gid,uid,home) VALUES (NULL,"$domain_id",MD5('"$passuser"'),'"$email"',"$quotauser","0","$gid","$uid",'"$home"')" | mysql -u "$user" -p"$pass" "$db" `
  28.  
  29. echo "$email":"$passuser"
  30.  
  31. }
  32.  
  33. #Function delete user
  34. deleteuser()
  35. {
  36. delete=`echo "DELETE FROM virtual_users WHERE email='"$1"'" | mysql -u "$user" -p"$pass" "$db"`
  37. }
  38.  
  39. #Print User
  40. printuser()
  41. {
  42. print=`echo "select email, domain_id FROM virtual_users where email='"$1"'" | mysql -u "$user" -p"$pass" "$db"`
  43. numberline=`echo "$print" | wc -l `
  44.  
  45. if [ "$numberline" -eq 1 ]
  46. then
  47. echo "User does not exist "
  48. else
  49. echo "$print"
  50. fi
  51. }
  52.  
  53. compt=0
  54. case "$1" in
  55.  
  56. --print)
  57. shift
  58. printuser "$1"
  59. ;;
  60. --create)
  61.  
  62. args=`expr "$#" - 1 `
  63. while [ "$compt" -lt "$args" ] ;
  64. do
  65. shift
  66. createuser "$1"
  67. compt=`expr "$compt" + 1 `
  68. done
  69. ;;
  70. --delete)
  71. args=`expr "$#" - 1 `
  72. while [ "$compt" -lt "$args" ] ;
  73. do
  74. shift
  75. deleteuser "$1"
  76. compt=`expr "$compt" + 1 `
  77. done
  78. ;;
  79.  
  80. *)
  81. usage
  82. ;;
  83. esac
  84. */

Il y a encore quelques améliorations à apporter comme ne plus poser de questions (read -p) , création de liste de diffusion.

Si vous avez des remarques n'hésitez pas. Vaudrait mieux que je prenne de bonne habitude vu que je débute ;)

samedi, avril 10 2010

Script sauvegarde base de donnée

Lire la suite...

- page 1 de 4