A perl script, used to send remote MySQL commands, perlmysql
Below is one of the basic scripts to write some scripts that simplify management operations.
For a user who has never used a perl script, it is still difficult to directly use the code.
This script is used to send remote MySQL commands and receive results. The function is simple and will be improved later.
#!/usr/bin/perl use Getopt::Long;use DBI; Getopt::Long::GetOptions( 'host|h=s' => \$host, 'user|u=s' => \$user, 'password|pw=s' => \$password, 'port|p=s' => \$port, 'command|c=s' => \$command, 'groupfile|f=s' => \$groupfile, 'help' => \$help ); #print help info my $printh=q{usage : mysqlcon -h 192.168.0.33 -u root -pw 'xiaojun' -p 3306 -c 'show global status' or mysqlcon -g 2.txt -c 'select user();'cat 2.txt:192.168.0.33 root xiaojun 3306192.168.0.34 root xiaojun 3306options:-h database server *-u account name *-pw password for account *-p port for mysqld *-c command to execute *-help print help};=podif(!defined($host)){ print "page flag set to $page "}if(defined($user)){ print "user flag set to $user\n ";}if(defined($password)){ print "onoff flag set to $password \n";}if(defined($command)){ print "help flag set to $command \n";}if(defined($help)){ print $printh}=cutsub execute_sql{my $dsn = "DBI:mysql:database=mysql;host=$_[0]:$_[1]";my ($dbh,$sth,@ary);$dbh = DBI->connect($dsn,$_[2],$_[3],{'RaiseError' => 1});$sth = $dbh->prepare("$_[4]");$sth->execute(); while(@ary = $sth->fetchrow_array()){print join("\t",@ary),"\n";} $sth->finish; $dbh->disconnect; }#&execute_sql($host,$port,$user,$password,$command) ;unless (!defined($help)) { die "$printh" };if(defined($groupfile)){ unless (defined($command)) { die "Wrong usage : No command input .\n $printh" }; open(IN,$groupfile); while($line=<IN>){ my @args=split /\s/,$line; print "host:@args[0]\ncommand:$command\n******BEGIN\n"; &execute_sql(@args[0],@args[3],@args[1],@args[2],$command) ; print "******END \n\n\n*****************************************************\n\n\n"; }}else{unless (defined($host)) { die "Wrong usage : No host input .\n $printh" };unless (defined($user)) { die "Wrong usage : No account input .\n $printh" };unless (defined($password)) { die "Wrong usage : No password input .\n $printh" };unless (defined($port)) { die "Wrong usage : No port number input .\n $printh" };unless (defined($command)) { die "Wrong usage : No command input .\n $printh" };&execute_sql($host,$port,$user,$password,$command) ;}
Usage
[root@centos511 ~]# ./6.perl -h 192.168.0.33 -u root -pw 'xiaojun' -p 3306 -c 'select user()' ;root@192.168.0.33[root@centos511 ~]# ./6.perl -g 2.txt -c 'select user()' host:192.168.0.33command:select user()******BEGINroot@192.168.0.33******END *****************************************************host:192.168.0.33command:select user()******BEGINroot@192.168.0.33******END *****************************************************[root@centos511 ~]# cat 2.txt 192.168.0.33 root xiaojun 3306192.168.0.33 root xiaojun 3306[root@centos511 ~]# ./6.perl -helpusage : mysqlcon -h 192.168.0.33 -u root -pw 'xiaojun' -p 3306 -c 'show global status' or mysqlcon -g 2.txt -c 'select user();'cat 2.txt:192.168.0.33 root xiaojun 3306192.168.0.34 root xiaojun 3306options:-h database server *-u account name *-pw password for account *-p port for mysqld *-c command to execute *-help print help