Archivi

Perl: automatizzare il dump di un database MySQL remoto via PHPMyAdmin

26 Ottobre 2014 di In: Script, Sistemistico
Ho appena finito di scrivere questo script in Perl che permette di scaricare in locale un dump in formato SQL di un server MySQL remoto tramite PHPMyAdmin (d’ora in poi PMA). In questo caso il server MySQL è quello di Aruba e PMA è in italiano. Lo script simula una navigazione nel sito quindi è possibile che non funzioni con tutte le versioni di PMA. Lo script è chiaramente migliorabile. La prossima versione permetterà l’esecuzione da terminale passando gli argomenti necessari e sarà in formato EXE.
#!/usr/bin/perl -w 
use strict;
use WWW::Mechanize;
my $login    = "XXXXXXX";
my $password = "Password!";
my $url = "http://mysql.aruba.it/login/index.php?lang=it-iso-8859-1";
my $url2 = "http://mysql.aruba.it/phpMyAdmin-5/server_export.php";
my $url3 = "http://mysql.aruba.it/phpMyAdmin-5/navigation.php";
my $dumpfile = 'c:\Percorso\del_file\di_output\DBdump.sql';
my $mech = WWW::Mechanize->new();
 
print "1 - Connessione\n";
$mech->get($url) or die "ERRORE: Impossibile raggiungere il sito web\n" ;
 
print "2 - Autenticazione\n";
$mech->form_with_fields(("utente","password","controllo")) or die "ERRORE: Impossibile trovare un form con i campi\n" ;
$mech->field("utente",$login);
$mech->field("password",$password);
$mech->submit_form(); 
 
print "3 - Download del backup\n";
$mech->get($url2);
$mech->form_name("dump");
$mech->submit_form() or die "ERRORE: Impossibile raggiungere la pagina esporta\n";
$mech->save_content ( $dumpfile ) or die "ERRORE: Impossibile salvare il file\n";
 
print "4 - Disconnessione\n";
$mech->get($url3);
$mech->follow_link( tag => 'a', n => 3 ) or die "ERRORE: Impossibile disconnettersi\n" ;