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

Related posts

Leave a Comment