From ee79ab41ad36748e1d25f0011a9d143bf5fed7ef Mon Sep 17 00:00:00 2001 From: Jean-Marie Renouard Date: Mon, 24 Sep 2018 16:12:40 +0200 Subject: [PATCH] New script for running remote audit and generate HTML report --- runAudit.sh | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++ txt2html.pl | 27 ++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 runAudit.sh create mode 100644 txt2html.pl diff --git a/runAudit.sh b/runAudit.sh new file mode 100644 index 0000000..e6092e9 --- /dev/null +++ b/runAudit.sh @@ -0,0 +1,116 @@ +#!/bin/bash + +server=$1 +_DIR=$(dirname `readlink -f $0`) + +#SSH_OPTIONS="-i utilities/id_rsa" + +SSH_OPTIONS="${SSH_OPTIONS:-""} + +export SSH_CLIENT="ssh -q $SSH_OPTIONS -o TCPKeepAlive=yes -o ServerAliveInterval=50 -o strictHostKeyChecking=no" +export SCP_CLIENT="scp -q $SSH_OPTIONS -o TCPKeepAlive=yes -o ServerAliveInterval=50 -o strictHostKeyChecking=no" + _DIR="$(dirname "`readlink -f $0`")" + +echo "* CLEANUP OLD RESULT FILES" +rm -f mysqltuner_${server}.txt pt-*_${server}.txt innotop_${server}.txt + +echo "* RUNNNING MYSQLTUNER" +$SSH_CLIENT root@${server} "mysqltuner --verbose --outputfile /tmp/mysqltuner_${server}.txt" +[ $? -ne 0 ] && exit 1 + +echo "* RUNNNING PERCONA SUMMARY" +$SSH_CLIENT root@${server} "pt-summary> /tmp/pt-summary_${server}.txt" +[ $? -ne 0 ] && exit 1 + +echo "* RUNNNING PERCONA MYSQL SUMMARY" +$SSH_CLIENT root@${server} "pt-mysql-summary> /tmp/pt-mysql-summary_${server}.txt" +[ $? -ne 0 ] && exit 1 + +echo "* RUNNNING INNOTOP" +$SSH_CLIENT root@${server} "innotop -C -d1 --count 5 -n>> /tmp/innotop_${server}.txt" +[ $? -ne 0 ] && exit 1 + +echo "* IMPORTING RESULT TXT" +$SCP_CLIENT root@${server}:/tmp/mysqltuner_${server}.txt . +$SCP_CLIENT root@${server}:/tmp/pt-*_${server}.txt . +$SCP_CLIENT root@${server}:/tmp/innotop_${server}.txt . +[ $? -ne 0 ] && exit 1 + +REPORT_NAME=audit.html +echo "* GENERATING HTML RESULT" +( +DATE="$(date)" +cat< + + + + + MySQL/MariaDB Audit report - $DATE + + + + + + + + + +

MySQL/MariaDB Audit report - $DATE

+
+ +
+
+EOF
+) > ${REPORT_NAME}
+
+perl ${_DIR}/txt2Html.pl - mysqltuner_${server}.txt >> ${REPORT_NAME}
+
+(
+cat << 'EOF'
+
+
+
+EOF
+) >> ${REPORT_NAME}
+
+perl ${_DIR}/txt2Html.pl \# pt-summary_${server}.txt >> ${REPORT_NAME}
+(
+cat << 'EOF'
+
+
+
+EOF
+) >> ${REPORT_NAME}
+perl ${_DIR}/txt2Html.pl \# pt-mysql-summary_${server}.txt >> ${REPORT_NAME}
+
+(
+cat << 'EOF'
+
+
+
+EOF
+) >> ${REPORT_NAME}
+
+cat innotop_${server}.txt >> ${REPORT_NAME}
+(
+cat << 'EOF'
+
+
+ + + + +EOF +) >> ${REPORT_NAME} +echo "* ALL IS OK" +exit 0 \ No newline at end of file diff --git a/txt2html.pl b/txt2html.pl new file mode 100644 index 0000000..7b03d42 --- /dev/null +++ b/txt2html.pl @@ -0,0 +1,27 @@ +#!/bin/env perl +use strict; +use warnings; +use File::Basename; + +my $headerSep=$ARGV[0]; +my $txtFile=$ARGV[1]; +my $fileid =basename($txtFile); +$fileid=~ s/\./-/g; + +open(my $fh, '<', $txtFile) or die "Could not open file '$txtFile' $!"; +print "\n
";
+my $i=1;
+while (my $row = <$fh>) {
+    chomp $row;
+    if ($row =~ /^$headerSep/) {
+                print "
\n"; + $row =~ s/$headerSep//g; + print "

$row

\n"; + print "
";
+                $i++;
+                next;
+    }
+    print "$row\n" unless $row =~ /^\s*$/;
+}
+print "
\n"; +close $fh;