#! /bin/sh /usr/share/dpatch/dpatch-run ## 04_use_defaults-file_by_default.dpatch by ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: No description. @DPATCH@ diff -urNad mylvmbackup-0.11~/man/mylvmbackup.pod mylvmbackup-0.11/man/mylvmbackup.pod --- mylvmbackup-0.11~/man/mylvmbackup.pod 2009-02-26 15:04:09.000000000 +0100 +++ mylvmbackup-0.11/man/mylvmbackup.pod 2009-02-26 15:04:09.000000000 +0100 @@ -188,6 +188,11 @@ Specifies the path to the local socket file, if it is not located at the default location. The default is the empty string. +=item B<--defaults_file=string> + +Specifies the path to the local debian.cnf file, so no user/password needs +to be given on the commandline or in the mylvmbackup.conf. + =item B<--quiet> Suppresses logging of informal messages. Warnings and errors will still diff -urNad mylvmbackup-0.11~/mylvmbackup.conf mylvmbackup-0.11/mylvmbackup.conf --- mylvmbackup-0.11~/mylvmbackup.conf 2009-02-26 15:04:09.000000000 +0100 +++ mylvmbackup-0.11/mylvmbackup.conf 2009-02-26 15:04:31.000000000 +0100 @@ -19,6 +19,7 @@ port= socket= mycnf=/etc/mysql/my.cnf +defaults_file=/etc/mysql/debian.cnf # # LVM-specific options diff -urNad mylvmbackup-0.11~/mylvmbackup.pl.in mylvmbackup-0.11/mylvmbackup.pl.in --- mylvmbackup-0.11~/mylvmbackup.pl.in 2009-02-26 15:04:09.000000000 +0100 +++ mylvmbackup-0.11/mylvmbackup.pl.in 2009-02-26 15:04:09.000000000 +0100 @@ -84,6 +84,7 @@ my $syslog_facility; my $syslog_remotehost; my $running_backup; +my $defaults_file; # Load defaults into variables load_defaults(); @@ -178,6 +179,9 @@ # Figure out our DSN string my $dsn = "DBI:mysql:database=mysql"; +if(length($defaults_file) > 0) { + parse_defaults_file($defaults_file); +} if(length($socket) > 0) { $dsn .= ";mysql_socket=".$socket; } @@ -260,6 +264,7 @@ $socket = $cfg->val ('mysql', 'socket', $socket); $mysqld_safe = $cfg->val ('mysql', 'mysqld_safe', $mysqld_safe); $mycnf = $cfg->val ('mysql', 'mycnf', $mycnf); + $defaults_file = $cfg->val ('mysql', 'defaults_file', $defaults_file); $vgname=$cfg->val ('lvm', 'vgname', $vgname); $lvname=$cfg->val ('lvm', 'lvname', $lvname); @@ -323,6 +328,7 @@ "socket=s" => \$socket, "mysqld_safe=s" => \$mysqld_safe, "mycnf=s" => \$mycnf, + "defaults_file=s" => \$defaults_file, # lvm "vgname=s" => \$vgname, @@ -387,6 +393,7 @@ $socket = ''; $mysqld_safe='mysqld_safe'; $mycnf = '/etc/mysql/my.cnf'; + $defaults_file = '/etc/mysql/my.cnf'; # lvm $vgname='mysql'; @@ -439,6 +446,21 @@ $syslog_remotehost = ''; } +sub parse_defaults_file +{ + my $cfg = new Config::IniFiles( -file => $defaults_file ) + or log_msg ("Couldn't read defaults configuration file: " . $!, 'LOG_WARNING'); + + if ($cfg->SectionExists("client")) + { + $user = $cfg->val( 'client', 'user'); + $password = $cfg->val( 'client', 'password'); + $host = $cfg->val( 'client', 'host'); + } else { + log_msg ("Only debian.cnf style configs allowed, with a [client] section.", 'LOG_WARNING'); + } +} + sub flush_tables { my $dbh = shift; @@ -758,6 +780,7 @@ --host= Hostname for MySQL --port= TCP port for MySQL --socket= UNIX socket for MySQL + --defaults_file= Debian's debian.cnf file (def: $defaults_file) --quiet Suppress diagnostic output, print warnings and errors only