Projet

Général

Profil

Révision c679de12

IDc679de12ce1e273f970f36a3f36621f299f033a1
Parent feb54309
Enfant d3de1a48

Ajouté par Jonas Palm il y a environ 9 ans

code rewrite

removed bashisms and cleaned everything up

Voir les différences:

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