Scripts para ser usados en servidores web con ISPConfig
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

141 Zeilen
3.4 KiB

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