作用一:可以分发一台机器,可以在线上测试用;

作用二:可以批量分发多台机器,统一部署;

见码:


#!/usr/bin/perl
use Getopt::Std;
use Net::SCP::Expect;
use strict;
use vars qw($opt_s $opt_u $opt_H $opt_d $opt_p $opt_h);
getopts('s:u:H:d:p:h');
my ($src_file,$username,$Hostname,$dest_file,$passwd,$help,$jd);
&main();
sub main {
        get_args();
        scp_auto();
        }
sub get_args {
        $src_file = $opt_s if $opt_s;
        $username = $opt_u if $opt_u;
        $Hostname = $opt_H if $opt_H;
        $dest_file = $opt_d if $opt_d;
        $passwd = $opt_p if $opt_p;
        $help = $opt_h if $opt_h;
        &Usage() if (!defined($src_file) || !defined($username) || !defined($Hostname)
|| !defined($dest_file) || !defined($passwd));
        }
sub scp_auto {
        if (-f $Hostname) {
        open (HD,"$Hostname") || die "Cannot find file :$!\n";
        my @jd=<HD>;
        close (HD);
        foreach $jd(@jd) {
        chomp ($jd);
 my  $scpe = Net::SCP::Expect->new(host=>$jd,user=>"$username",password=>"$passwd",
auto_yes=>1,timeout=>200,verbose=>1,recursive=>1);
          print "$jd ---------------------\n";
                $scpe->scp("$src_file","$dest_file");
        }
        } else {
my  $scpe = Net::SCP::Expect->new(host=>$Hostname,user=>"$username",password=>"$passwd"
,auto_yes=>1,timeout=>200,verbose=>1,recursive=>1);
          print "$Hostname ---------------------\n";
                $scpe->scp("$src_file","$dest_file");
        }
        }
sub Usage{
        print << "END";
          ./scp_patch.pl -s <src_file> -u <username> -H <Hostname or ip> -d <dest_file> -p <password>
END
        exit 2;
}
#############################################END##############################################

实例一:

./scp_batch.pl -s /root/install.log -u root -H 192.168.100.144 -d /tmp/c -p 123456

实例二:

./scp_batch.pl -s /root/install.log -u root -H t -d /tmp/c -p 123456
###t为文件######
[root@master test]# cat t
192.168.100.145
192.168.100.144