Révision c679de12
code rewrite
removed bashisms and cleaned everything up
| plugins/other/wordpress-multisite | ||
|---|---|---|
| 1 |
#!/bin/bash
|
|
| 1 |
#!/usr/bin/env sh
|
|
| 2 | 2 |
# wordpress-multisite plugin |
| 3 | 3 |
# |
| 4 |
# Author Jonas Palm |
|
| 5 |
# E-Mail jonaspalm . posteo. de |
|
| 4 |
# Version 0.2 |
|
| 5 |
# Date 2016-10-24 |
|
| 6 |
# Code improvements |
|
| 7 |
# |
|
| 6 | 8 |
# Version 0.1 |
| 7 | 9 |
# Date 2016-02-07 |
| 8 |
# |
|
| 10 |
# Initial release |
|
| 11 |
# |
|
| 9 | 12 |
: <<=cut |
| 10 | 13 |
=head1 NAME |
| 11 | 14 |
Wordpress-Multisite Munin Plugin |
| ... | ... | |
| 21 | 24 |
=head2 Config file |
| 22 | 25 |
Create the config file plugin-conf.d/wordpress with the following values: |
| 23 | 26 |
|
| 24 |
=over 6
|
|
| 27 |
=over 4
|
|
| 25 | 28 |
=item * [wordpress*] |
| 26 |
=item * env.DB_USER <database user (mandatory)> |
|
| 27 |
=item * env.DB_PASSWORD <database password (mandatory)> |
|
| 28 |
=item * env.DB_NAME <database name (defaults to wordpress> |
|
| 29 |
=item * env.DB_PREFIX <database prefix (defaults to wp_)> |
|
| 30 |
=item * env.DB_HOST <database host (defaults to localhost)> |
|
| 31 |
=item * env.DB_PORT <database port (defaults to 3306)> |
|
| 29 |
=item * env.mysqlopts <ie -uroot -prootpass> |
|
| 30 |
=item * env.mysqlconnection <defaults to -hlocalhost> |
|
| 31 |
=item * env.database <ie -Dwordpress> |
|
| 32 |
=item * env.dbprefix <defaults to wp_> |
|
| 32 | 33 |
|
| 33 | 34 |
=back |
| 34 | 35 |
|
| 35 |
=head1 VERSION |
|
| 36 |
|
|
| 37 |
0.1 2016-02-07 |
|
| 36 |
=head1 VERSION |
|
| 37 |
Version 0.2 (2016-02-07) |
|
| 38 | 38 |
|
| 39 | 39 |
=head1 AUTHOR |
| 40 | 40 |
|
| 41 | 41 |
Jonas Palm <jonaspalm . posteo . de> |
| 42 | 42 |
|
| 43 |
=cut
|
|
| 43 |
=head1 LICENSE
|
|
| 44 | 44 |
|
| 45 |
# Fill some variables |
|
| 46 |
DB_USER=${DB_USER}
|
|
| 47 |
DB_PASSWORD=${DB_PASSWORD}
|
|
| 48 |
DB_NAME=${DB_NAME:-wordpress}
|
|
| 49 |
DB_PREFIX=${DB_PREFIX:-wp_}
|
|
| 50 |
DB_HOST=${DB_HOST:-localhost}
|
|
| 51 |
DB_PORT=${DB_PORT:-3306}
|
|
| 45 |
GPLv3 or higher |
|
| 52 | 46 |
|
| 53 |
MYSQLOPTS="-h$DB_HOST -P $DB_PORT -p$DB_PASSWORD -u$DB_USER -D $DB_NAME --column-names=0 -s"
|
|
| 47 |
=cut
|
|
| 54 | 48 |
|
| 49 |
# fill vars |
|
| 50 |
DB_OPTIONS=${mysqlopts}
|
|
| 51 |
DB_CONNECTION=${mysqlconnection:--hlocalhost}
|
|
| 52 |
DB_NAME=${database}
|
|
| 53 |
DB_PREFIX=${dbprefix:-wp_}
|
|
| 54 |
|
|
| 55 |
MYSQL_CMD=$(which mysql) |
|
| 56 |
wp_get() {
|
|
| 57 |
case $1 in |
|
| 58 |
comments) QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}${2}comments WHERE comment_approved = '1' AND comment_type = '';" ;;
|
|
| 59 |
ids) QUERY="SELECT blog_id FROM ${DB_PREFIX}blogs;" ;;
|
|
| 60 |
pingbacks) QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}${2}comments WHERE comment_approved = '1' AND comment_type = 'pingback';" ;;
|
|
| 61 |
posts) QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}${2}posts WHERE post_status = 'publish' AND post_password = '' AND post_type = 'post';" ;;
|
|
| 62 |
title) QUERY="SELECT option_value FROM ${DB_PREFIX}${2}options WHERE option_name = 'siteurl';" ;;
|
|
| 63 |
users) QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}users;"
|
|
| 64 |
esac |
|
| 65 |
|
|
| 66 |
$MYSQL_CMD $DB_CONNECTION $DB_OPTIONS $DB_NAME --column-names=0 -s --execute="$QUERY" |
|
| 67 |
} |
|
| 68 |
|
|
| 69 |
# whole network |
|
| 55 | 70 |
if [ "$1" = "config" ]; then |
| 56 |
echo "multigraph wordpress"
|
|
| 57 |
echo "graph_title Wordpress Mulitsite"
|
|
| 58 |
echo "graph_order instances users posts comments pingbacks"
|
|
| 59 |
echo "graph_vlabel Wordpress"
|
|
| 60 |
echo "graph_category Wordpress"
|
|
| 61 |
echo "graph_info Some Statistics of Wordpress"
|
|
| 62 |
echo "instances.label Instances"
|
|
| 63 |
echo "users.label Users"
|
|
| 64 |
echo "posts.label Posts"
|
|
| 65 |
echo "comments.label Comments"
|
|
| 66 |
echo "pingbacks.label Pingbacks"
|
|
| 71 |
echo "multigraph wordpress"
|
|
| 72 |
echo "graph_title Wordpress Mulitsite"
|
|
| 73 |
echo "graph_order instances users posts comments pingbacks"
|
|
| 74 |
echo "graph_vlabel Wordpress"
|
|
| 75 |
echo "graph_category Wordpress"
|
|
| 76 |
echo "graph_info Some Statistics of Wordpress"
|
|
| 77 |
echo "instances.label Instances"
|
|
| 78 |
echo "users.label Users"
|
|
| 79 |
echo "posts.label Posts"
|
|
| 80 |
echo "comments.label Comments"
|
|
| 81 |
echo "pingbacks.label Pingbacks"
|
|
| 67 | 82 |
else |
| 68 |
CNT=0 |
|
| 69 |
for n in `mysql $MYSQLOPTS --execute="select blog_id from ${DB_PREFIX}blogs"`; do
|
|
| 70 |
if [ "$n" == "1" ]; then |
|
| 71 |
i= |
|
| 72 |
else |
|
| 73 |
i=${n}_
|
|
| 74 |
fi |
|
| 75 |
|
|
| 76 |
POSTS=`mysql $MYSQLOPTS --execute="SELECT COUNT(*) FROM ${DB_PREFIX}${i}posts WHERE post_status = 'publish' AND post_password = '' AND post_type = 'post';"`
|
|
| 77 |
(( POSTS_ += POSTS )) |
|
| 78 |
|
|
| 79 |
COMMENTS=`mysql $MYSQLOPTS --execute="SELECT COUNT(*) FROM ${DB_PREFIX}${i}comments WHERE comment_approved = '1' AND comment_type = '';"`
|
|
| 80 |
(( COMMENTS_ += COMMENTS )) |
|
| 81 |
|
|
| 82 |
PINGBACKS=`mysql $MYSQLOPTS --execute="SELECT COUNT(*) FROM ${DB_PREFIX}${i}comments WHERE comment_approved = '1' AND comment_type = 'pingback';"`
|
|
| 83 |
(( PINGBACKS_ += PINGBACKS )) |
|
| 84 |
|
|
| 85 |
(( CNT += 1 )) |
|
| 86 |
done |
|
| 87 |
|
|
| 88 |
# return values |
|
| 89 |
echo "multigraph wordpress" |
|
| 90 |
echo "posts.value $POSTS_" |
|
| 91 |
echo "comments.value $COMMENTS_" |
|
| 92 |
echo "pingbacks.value $PINGBACKS_" |
|
| 93 |
echo "instances.value $CNT" |
|
| 94 |
echo "users.value `mysql $MYSQLOPTS --execute="SELECT COUNT(*) FROM ${DB_PREFIX}users ;"`"
|
|
| 83 |
for n in $(wp_get ids); do |
|
| 84 |
i= |
|
| 85 |
test "$n" -gt "1" && i=${n}_
|
|
| 86 |
|
|
| 87 |
POSTS=$(expr $POSTS + $(wp_get posts $i)) |
|
| 88 |
COMMENTS=$(expr $COMMENTS + $(wp_get comments $i)) |
|
| 89 |
PINGBACKS=$(expr $PINGBACKS + $(wp_get pingbacks $i)) |
|
| 90 |
CNT=$(expr $CNT + 1) |
|
| 91 |
done |
|
| 92 |
|
|
| 93 |
echo "multigraph wordpress" |
|
| 94 |
echo "posts.value $POSTS" |
|
| 95 |
echo "comments.value $COMMENTS" |
|
| 96 |
echo "pingbacks.value $PINGBACKS" |
|
| 97 |
echo "instances.value $CNT" |
|
| 98 |
echo "users.value $(wp_get users)" |
|
| 95 | 99 |
fi |
| 96 | 100 |
|
| 97 | 101 |
# single blogs |
| 98 |
for n in `mysql $MYSQLOPTS --execute="select blog_id from ${DB_PREFIX}blogs"`; do
|
|
| 99 |
if [ "${n}" == "1" ]; then
|
|
| 100 |
i= |
|
| 101 |
else |
|
| 102 |
i=${n}_
|
|
| 103 |
fi |
|
| 104 |
|
|
| 105 |
if [ "$n" -le "9" ]; then |
|
| 106 |
n=0${n}
|
|
| 107 |
fi |
|
| 108 |
|
|
| 109 |
if [ "$1" = "config" ]; then |
|
| 110 |
echo "multigraph wordpress.site_${n}"
|
|
| 111 |
echo "graph_title `mysql $MYSQLOPTS --execute=\"select option_value from ${DB_PREFIX}${i}options where option_name = 'siteurl';\"`"
|
|
| 112 |
echo "graph_order posts comments pingbacks" |
|
| 113 |
echo "graph_vlabel Wordpress ID ${n}"
|
|
| 114 |
echo "posts.label Posts" |
|
| 115 |
echo "comments.label Comments" |
|
| 116 |
echo "pingbacks.label Pingbacks" |
|
| 117 |
else |
|
| 118 |
POSTS=`mysql $MYSQLOPTS --execute="SELECT COUNT(*) FROM ${DB_PREFIX}${i}posts WHERE post_status = 'publish' AND post_password = '' AND post_type = 'post';"`
|
|
| 119 |
COMMENTS=`mysql $MYSQLOPTS --execute="SELECT COUNT(*) FROM ${DB_PREFIX}${i}comments WHERE comment_approved = '1' AND comment_type = '';"`
|
|
| 120 |
PINGBACKS=`mysql $MYSQLOPTS --execute="SELECT COUNT(*) FROM ${DB_PREFIX}${i}comments WHERE comment_approved = '1' AND comment_type = 'pingback';"`
|
|
| 121 |
|
|
| 122 |
# return values |
|
| 123 |
echo "multigraph wordpress.site_${n}"
|
|
| 124 |
echo "posts.value $POSTS" |
|
| 125 |
echo "comments.value $COMMENTS" |
|
| 126 |
echo "pingbacks.value $PINGBACKS" |
|
| 127 |
fi |
|
| 102 |
for n in $(wp_get ids); do |
|
| 103 |
i= |
|
| 104 |
test "$n" -gt "1" && i=${n}_
|
|
| 105 |
test "$n" -le "9" && n=0${n}
|
|
| 106 |
|
|
| 107 |
if [ "$1" = "config" ]; then |
|
| 108 |
echo "multigraph wordpress.site_${n}"
|
|
| 109 |
echo "graph_title $(wp_get title $i)" |
|
| 110 |
echo "graph_order posts comments pingbacks" |
|
| 111 |
echo "graph_vlabel Wordpress ID ${n}"
|
|
| 112 |
echo "posts.label Posts" |
|
| 113 |
echo "comments.label Comments" |
|
| 114 |
echo "pingbacks.label Pingbacks" |
|
| 115 |
else |
|
| 116 |
echo "multigraph wordpress.site_${n}"
|
|
| 117 |
echo "posts.value $(wp_get posts $i)" |
|
| 118 |
echo "comments.value $(wp_get comments $i)" |
|
| 119 |
echo "pingbacks.value $(wp_get pingbacks $i)" |
|
| 120 |
fi |
|
| 128 | 121 |
done |
Formats disponibles : Unified diff