commit 3921ac94b80d5799a24dfdce064c421d8eadbbf8 Author: Christoph Date: Wed Mar 8 02:59:44 2017 +0100 Initial Import. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c64e6ce --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/BAK/* +*.swp diff --git a/OLD/trigger_piwik_archives.sh b/OLD/trigger_piwik_archives.sh new file mode 100755 index 0000000..1511f17 --- /dev/null +++ b/OLD/trigger_piwik_archives.sh @@ -0,0 +1,77 @@ +#!/usr/bin/env bash + +## --- +## - !! Notice "" +## - +## - Set a valid shell to th accout, under which apache webserver +## - is running: +## - +## - usermod -s /bin/sh www-data +## --- + +PATH=/usr/local/apache2/bin:/usr/local/php/bin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +stats_base_dir="/var/www/stats.warenform.de" + +php_bin=/usr/local/php/bin/php +http_user=www-data + +archive_script="misc/cron/archive.php" + +## - 1.) Create (encrypted) option file: +## - $ mysql_config_editor set --login-path=piwik_admin --socket=/tmp/mysql.sock --user=piwik_admin --password +## - $ Password: +## - +## - 2.) Set environment variable mysql_credential_args="--login-path=piwik_admin" +## - Now, the backup script uses the encrypted option file instead of (unencrypt) password +## - on command line. +#db_host="localhost" +#db_user="piwik_admin" +#db_passwd="r9ftWbhKcw" +mysql_credential_args="--login-path=piwik_admin" + +error_log="/tmp/$$.err" + +# --------------------------------------------------- # +# ------------------- Funktionen -------------------- # +# +error(){ + echo + echo "----" + echo "$1" + echo + echo "$2" + echo +} +# +# ------------------ Ende Funktionen ---------------- # +# --------------------------------------------------- # + +cd /tmp + +databases=`mysql $mysql_credential_args -N -s -e "show databases" | grep piwik_` + +for db_name in $databases ; do + + if [ -f "$stats_base_dir/$db_name/console" ];then + + ## - Alt - nicht mehr empfohlen + #su www-data -c "$php_bin $stats_base_dir/$db_name/$archive_script --url=http://stats.warenform.de/$db_name/" > /dev/null 2> $error_log + + ## - Neu + su $http_user -c "$php_bin $stats_base_dir/$db_name/console core:archive --url=https://stats.warenform.de/$db_name/" > /dev/null 2> $error_log + #su $http_user -c "$php_bin $stats_base_dir/$db_name/console core:archive --url=https://stats.warenform.de/$db_name/" + if [ -f $error_log ]; then + _err=`cat $error_log` + [ -n "$_err" ] && error "Error while executing archive script for database \"$db_name\"" "$_err" + [ -n "$_err" ] && continue + fi + else + error "Error: archive script for database \"$db_name\" not found" "$stats_base_dir/$db_name/console" + continue + fi + +done + +rm -f $error_log +exit 0 diff --git a/trigger_piwik_archives.sh b/trigger_piwik_archives.sh new file mode 100755 index 0000000..8586958 --- /dev/null +++ b/trigger_piwik_archives.sh @@ -0,0 +1,200 @@ +#!/usr/bin/env bash + +PATH=/usr/local/apache2/bin:/usr/local/php/bin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +# - Is this script running on terminal ? +# - +if [[ -t 1 ]] ; then + terminal=true + LOGGING=true +else + terminal=false + LOGGING=false +fi + + +stats_base_dir="/var/www/stats.warenform.de" + +php_bin=/usr/local/php/bin/php +http_user=www-data + +# - MySQL / MariaDB credentials +# - +# - Giving password on command line is insecure an sind mysql 5.5 +# - you will get a warning doing so. +# - +# - Reading username/password fro file ist also possible, using MySQL/MariaDB +# - commandline parameter '--defaults-file'. +# - +# - Since Mysql Version 5.6, you can read username/password from +# - encrypted file. +# - +# - Create (encrypted) option file: +# - $ mysql_config_editor set --login-path=piwik_admin --socket=/tmp/mysql.sock --user=piwik_admin --password +# - $ Password: +# - +# - Use of option file: +# - $ mysql --login-path=local ... +# - +# - Example +# - mysql_credential_args="--login-pat=piwik_admin" +# - mysql_credential_args="--defaults-file=/etc/mysql/debian.cnf" (Debian default) +# - mysql_credential_args="--defaults-file=/usr/local/mysql/sys-maint.cnf" +# - + +mysql_credential_args="--login-path=piwik_admin" + +error_log="/tmp/$$.err" + +# --------------------------------------------------- # +# ------------------- Funktionen -------------------- # +# +usage() { + echo + [ -n "$1" ] && echo -e "Error: $1\n" + +cat< /tmp/shprompt$$ + if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then + echo "$*\\c" 1>&2 + else + echo -e -n "$*" 1>&2 + fi + rm /tmp/shprompt$$ +} +info (){ + echo "" + echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*" + echo "" +} +error (){ + echo "" + echo -e "\t[ \033[31m\033[1mError\033[m ]: $*" + echo "" +} +error_cron(){ + echo + echo "----" + echo "$1" + echo + echo "$2" + echo +} +echo_ok() { + echo -e "\033[85G[ \033[32mok\033[m ]" + ## echo -e " [ ok ]" +} +echo_failed(){ + echo -e "\033[85G[ \033[1;31mfailed\033[m ]" + ## echo -e " [ failed ]" +} +# +# ------------------ Ende Funktionen ---------------- # +# --------------------------------------------------- # + +VERBOSE=false + +# --- +# - Read in Commandline arguments +# --- +while getopts hv opt ; do + case $opt in + v) VERBOSE=true + ;; + h) usage + ;; + esac +done + +cd /tmp + +databases=`mysql $mysql_credential_args -N -s -e "show databases" | grep piwik_` + +if $LOGGING ; then + echo -e "\n\t\033[1;32mStarting Script for Archiving Reports of Piwik Databases\033[1;37m\033[m\n\n" +fi + +declare -i sum_errors=0 +for db_name in $databases ; do + + if [ -f "$stats_base_dir/$db_name/console" ];then + + if $LOGGING ; then + + echononl "\tArchiving Reports of Piwik Database \033[1m$db_name\033[m" + + # - Archive Reports + # - + su $http_user -s /bin/bash \ + -c "$php_bin $stats_base_dir/$db_name/console core:archive --url=https://stats.warenform.de/$db_name/" \ + > $error_log 2>&1 + if [[ $? -ne 0 ]]; then + let "sum_errors += 1" + echo_failed + error "$(cat $error_log)" + else + echo_ok + if $VERBOSE ; then + echo + echo "$(cat $error_log)" + echo + echo + fi + fi + + else + + # - Archive Reports + # - + su $http_user -s /bin/bash \ + -c "$php_bin $stats_base_dir/$db_name/console core:archive --url=https://stats.warenform.de/$db_name/" \ + > $error_log 2>&1 + if [[ $? -ne 0 ]]; then + let "sum_errors += 1" + error_cron "Error while executing archive script for database \"$db_name\"" "$(cat $error_log)" + fi + + fi + + else + + if $LOGGING ; then + error "Archive script \"$stats_base_dir/$db_name/console\" for database \"$db_name\" not found!" + else + error_cron "Error: archive script for database \"$db_name\" not found" "$stats_base_dir/$db_name/console" + fi + continue + fi + +done + +if $LOGGING ; then + if [[ $sum_errors -eq 0 ]]; then + info "Script ended successfully." + else + error "Script ended with \033[1m${sum_errors}\033[m error(s)!" + fi +fi + +rm -f $error_log +exit 0