Scripts para ser usados en servidores web con ISPConfig
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

132 linhas
3.3 KiB

  1. #!/bin/bash -x
  2. usage()
  3. {
  4. echo "Usage: $0 [-h ] [ -s website ] [ -l | -v | -u userid ]" >&2
  5. exit 1
  6. }
  7. while getopts ":hs:lu:v" opt;
  8. do
  9. case "$opt" in
  10. h)
  11. echo "Usage:"
  12. echo " $0 -h Display this help message."
  13. echo " $0 -s <website> The website is a mandatory argument."
  14. echo " $0 -s <website> -l List WordPress users."
  15. echo " $0 -s <website> -v Display the WordPress version"
  16. echo " $0 -s <website> -u <userid> Generate and set a random password for this WordPress userid."
  17. exit 0
  18. ;;
  19. s)
  20. WEB=$OPTARG
  21. ;;
  22. l)
  23. LIST=1
  24. ;;
  25. u)
  26. USERID=$OPTARG
  27. ;;
  28. v)
  29. VERSION=1
  30. ;;
  31. \?)
  32. echo "Error: Invalid Option: -${OPTARG}" >&2
  33. usage
  34. ;;
  35. :)
  36. echo "Error: -${OPTARG} requires an argument."
  37. usage
  38. ;;
  39. *)
  40. usage
  41. ;;
  42. esac
  43. done
  44. if [ -z ${WEB} ]; then
  45. usage
  46. fi
  47. # declaration section
  48. # functions section
  49. check_err()
  50. {
  51. STATUS=$?
  52. if [ ${STATUS} -ne 0 ]; then
  53. echo "Unexpected error: ${STATUS}"
  54. exit ${STATUS}
  55. fi
  56. }
  57. function get_sysuser() {
  58. SYSUSER=`ls -l /var/www/ | grep ${WEB} | awk '{ print $11 }' | awk -F'/' '{ print $6 }'`
  59. echo ${SYSUSER}
  60. }
  61. function get_rootpath() {
  62. ROOTPATH="/var/www/${WEB}"
  63. echo ${ROOTPATH}
  64. }
  65. function get_php() {
  66. VERSION=`echo "select server_php.name from server_php join web_domain where server_php.server_php_id=web_domain.server_php_id and web_domain.server_php_id=90 and web_domain.server_php_id!=0 and web_domain.domain like '${WEB}'\G" | mysql --defaults-file=/etc/mysql/debian.cnf dbispconfig | awk '$1 ~ /:/ { print $2 }'`
  67. if [ -z "${VERSION}" ]; then
  68. echo "/usr/bin/php"
  69. else
  70. echo "/opt/php-${VERSION}/bin/php"
  71. fi
  72. }
  73. function change_user_password() {
  74. MYUSER=$(get_sysuser)
  75. MYPATH=$(get_rootpath)
  76. MYPHP=$(get_php)
  77. chsh -s /bin/bash ${MYUSER}
  78. cp /root/bin/wp-cli.phar ${MYPATH}/private
  79. NEWPASS=`openssl rand -base64 12`
  80. su -c "cd web && ${MYPHP} ../private/wp-cli.phar user update ${USERID} --user_pass=${NEWPASS}" - ${MYUSER}
  81. rm ${MYPATH}/private/wp-cli.phar
  82. chsh -s /bin/false ${MYUSER}
  83. echo ${NEWPASS}
  84. }
  85. function list_wp_users() {
  86. MYUSER=$(get_sysuser)
  87. MYPATH=$(get_rootpath)
  88. MYPHP=$(get_php)
  89. chsh -s /bin/bash ${MYUSER}
  90. cp /root/bin/wp-cli.phar ${MYPATH}/private
  91. su -c "cd web && ${MYPHP} ../private/wp-cli.phar user list" - ${MYUSER}
  92. rm ${MYPATH}/private/wp-cli.phar
  93. chsh -s /bin/false ${MYUSER}
  94. }
  95. function show_wp_version() {
  96. MYUSER=$(get_sysuser)
  97. MYPATH=$(get_rootpath)
  98. MYPHP=$(get_php)
  99. chsh -s /bin/bash ${MYUSER}
  100. cp /root/bin/wp-cli.phar ${MYPATH}/private
  101. su -c "cd web && ${MYPHP} ../private/wp-cli.phar core version --extra" - ${MYUSER}
  102. rm ${MYPATH}/private/wp-cli.phar
  103. chsh -s /bin/false ${MYUSER}
  104. }
  105. # main section
  106. if [ "${LIST}" == 1 ]; then
  107. list_wp_users
  108. exit
  109. elif [ "${VERSION}" == 1 ]; then
  110. show_wp_version
  111. exit
  112. else
  113. change_user_password
  114. fi