Scripts para ser usados en servidores web con ISPConfig
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
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