#!/usr/local/bin/perl # # mysig - grab some mysql stats for my signature on some mailing # lists.. Why? Because I could. # # Copyright 2001-2003, Jeremy Zawodny # # Feel free to use and butcher this. Oh, you'll need DBIx::DWIW. And # you'll need to supply connection parameters too. # # You'll also need a sig file fragment to include. # # Put this in your muttrc file: # # folder-hook mysql-users set signature="~/bin/mysig|" # # To make the "magic" happen. use strict; use DBIx::DWIW; sub get_status($); sub get_variable($); sub commify($); my $debug = 0; my $db = DBIx::DWIW->Connect( Host => 'localhost', DB => 'test', User => 'foo', Pass => 'bar' ); die "$!" unless $db; my $version = get_variable("version"); my $num_queries = get_status("Questions"); my $uptime = get_status("Uptime"); my $days_up = int($uptime / (60 * 60 * 24)); my $queries_per_sec = int($num_queries / $uptime); $version =~ s/-log//g; $version =~ s/-gamma//g; $version =~ s/-alpha//g; $version =~ s/-beta//g; print "$num_queries $uptime $ days_up $queries_per_sec\n" if $debug; open SIG, "; close SIG; print "\nMySQL $version: up $days_up days, processed ", commify($num_queries), " queries ($queries_per_sec/sec. avg)\n"; exit; ############################################################################ sub get_status($) { my $name = shift; my $sql = qq[SHOW STATUS LIKE "$name"]; return ($db->Array($sql))[1]; } sub get_variable($) { my $name = shift; my $sql = qq[SHOW VARIABLES LIKE "$name"]; return ($db->Array($sql))[1]; } sub commify($) { local $_ = shift; return 0 unless defined $_; 1 while s/^([-+]?\d+)(\d{3})/$1,$2/; return $_; } __END__