Scripts para ser usados en servidores web con ISPConfig
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

132 строки
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/ | awk '$9 ~ /^'${WEB}'$/ { 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