Projet

Général

Profil

Révision 820ef5b0

ID820ef5b00967852c2febf4efa98301d71d33f619
Parent d3de1a48
Enfant f211b090, 130466f1

Ajouté par null-git il y a presque 9 ans

better variable names, added option for length of blogid to sort multigraphs

Voir les différences:

plugins/other/wordpress-multisite
1
#!/usr/bin/env sh
1
#!/bin/sh
2 2
# wordpress-multisite plugin
3
#
4
# Version 0.3
5
# Date 2017-01-12
6
# Some last minor fixes
7
#
8
# Version 0.2
9
# Date 2016-10-24
10
# Code improvements
11
#
12
# Version 0.1
13
# Date 2016-02-07
14
# Initial release
15
#
16 3
: <<=cut
17 4
=head1 NAME
18 5

  
......
32 19
Create the config file plugin-conf.d/wordpress with the following values:
33 20

  
34 21
  [wordpress*]
35
  env.mysqlopts		# i.e. -uroot -prootpass
36
  env.mysqlconnection	# defaults to -hlocalhost
37
  env.database		# i.e. -Dwordpress
38
  env.dbprefix		# defaults to wp_
22
  env.mysqlopts		# I.e. -uroot -prootpass
23
  env.mysqlconnection	# Defaults to -hlocalhost
24
  env.database		# I.e. wordpress
25
  env.dbprefix		# Defaults to wp_
26
  env.networksize	# Blogs are ordered by id in multigraph view. This value should contain the numbers
27
  			# of digits that are needed to fit all the blog id's in. This value influences the
28
			# designation of data to munin and it will start collecting fresh data if you change
29
			# this number. Defaults to 2, (so networks with <= 99 blogs will be sorted correctly)
39 30

  
40 31
=head1 VERSION
41 32

  
42
Version 0.3 (2017-01-12)
43

  
44
=head2 Some minor fixes:
45

  
46
  * fixed perldoc
47
  * fixed some syntax warnings from shellcheck
48
  * replaced expr by $(( ))
33
Version 0.4 (2017-01-13)
49 34

  
50 35
=head1 AUTHOR
51 36

  
......
61 46
DB_CONNECTION=${mysqlconnection:--hlocalhost}
62 47
DB_NAME=${database}
63 48
DB_PREFIX=${dbprefix:-wp_}
49
NETWORK_SIZE=${network_size:-2}
64 50

  
65 51
MYSQL_CMD=$(which mysql)
52

  
53
# wp_get dataname [blogid]
66 54
wp_get() {
55
	local DB_QUERY=
56
	local BLOGID=
57
	if [ -n "$2" ] && [ "$2" -gt "1" ]; then
58
		# DB prefix for every wordpress instance in the network
59
		# Nr 1 is the main network blog and doesn't has a prefix
60
		BLOGID=${2}_
61
	fi
62

  
67 63
	case $1 in
68
		comments) QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}${2}comments WHERE comment_approved = '1' AND comment_type = '';" ;;
69
		ids) QUERY="SELECT blog_id FROM ${DB_PREFIX}blogs;" ;;
70
		pingbacks) QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}${2}comments WHERE comment_approved = '1' AND comment_type = 'pingback';" ;;
71
		posts) QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}${2}posts WHERE post_status = 'publish' AND post_password = '' AND post_type = 'post';" ;;
72
		title) QUERY="SELECT option_value FROM ${DB_PREFIX}${2}options WHERE option_name = 'siteurl';" ;;
73
		users) QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}users;"
64
		comments) DB_QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}${BLOGID}comments WHERE comment_approved = '1' AND comment_type = '';" ;;
65
		ids) DB_QUERY="SELECT blog_id FROM ${DB_PREFIX}blogs;" ;;
66
		pingbacks) DB_QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}${BLOGID}comments WHERE comment_approved = '1' AND comment_type = 'pingback';" ;;
67
		posts) DB_QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}${BLOGID}posts WHERE post_status = 'publish' AND post_password = '' AND post_type = 'post';" ;;
68
		title) DB_QUERY="SELECT option_value FROM ${DB_PREFIX}${BLOGID}options WHERE option_name = 'siteurl';" ;;
69
		users) DB_QUERY="SELECT COUNT(*) FROM ${DB_PREFIX}users;"
74 70
	esac
75 71

  
76
	$MYSQL_CMD $DB_CONNECTION $DB_OPTIONS $DB_NAME --column-names=0 -s --execute="$QUERY"
72
	"$MYSQL_CMD" $DB_CONNECTION $DB_OPTIONS "$DB_NAME" --column-names=0 -s --execute="$DB_QUERY"
77 73
}
78 74

  
79 75
# whole network
......
91 87
	echo "pingbacks.label Pingbacks"
92 88
else
93 89
	for n in $(wp_get ids); do
94
		i=
95
		test "$n" -gt "1" && i=${n}_
96

  
97
		POSTS=$((POSTS + $(wp_get posts "$i")))
98
		COMMENTS=$((COMMENTS + $(wp_get comments "$i")))
99
		PINGBACKS=$((PINGBACKS + $(wp_get pingbacks "$i")))
90
		POSTS=$((POSTS + $(wp_get posts "$n")))
91
		COMMENTS=$((COMMENTS + $(wp_get comments "$n")))
92
		PINGBACKS=$((PINGBACKS + $(wp_get pingbacks "$n")))
100 93
		CNT=$((CNT + 1))
101 94
	done
102 95

  
......
110 103

  
111 104
# single blogs
112 105
for n in $(wp_get ids); do
113
	i=
114
	test "$n" -gt "1" && i=${n}_
115
	test "$n" -le "9" && n=0${n}
106
	blogid_sortable="$(printf "%0${NETWORK_SIZE}d" "$n")"
116 107

  
117 108
	if [ "$1" = "config" ]; then
118
		echo "multigraph wordpress.site_${n}"
119
		echo "graph_title $(wp_get title "$i")"
109
		echo "multigraph wordpress.site_${blogid_sortable}"
110
		echo "graph_title $(wp_get title "$n")"
120 111
		echo "graph_order posts comments pingbacks"
121
		echo "graph_vlabel Wordpress ID ${n}"
112
		echo "graph_vlabel Wordpress ID ${blogid_sortable}"
122 113
		echo "posts.label Posts"
123 114
		echo "comments.label Comments"
124 115
		echo "pingbacks.label Pingbacks"
125 116
	else
126
		echo "multigraph wordpress.site_${n}"
127
		echo "posts.value $(wp_get posts "$i")"
128
		echo "comments.value $(wp_get comments "$i")"
129
		echo "pingbacks.value $(wp_get pingbacks "$i")"
117
		echo "multigraph wordpress.site_${blogid_sortable}"
118
		echo "posts.value $(wp_get posts "$n")"
119
		echo "comments.value $(wp_get comments "$n")"
120
		echo "pingbacks.value $(wp_get pingbacks "$n")"
130 121
	fi
131 122
done

Formats disponibles : Unified diff