PerlのNet::FTPでログインチェック
★設定が同じ構成のサーバを大量に構築した際、作成したユーザーがFTPでログイン可能かテストするスクリプト
#!/usr/bin/perl use strict; use warnings; use Net::FTP; ################################################### # SET VALIABLE ################################################### my $pass_file = $ARGV[0]; my $host_file = $ARGV[1]; my %hash; my @hostname; ################################################### # SET SUBROUTINES ################################################### sub ftp_connect { my ($hostname) = @_; my $ftp = Net::FTP->new($hostname) or die; } sub ftp_login { my ($hostname,$user,$pass) = @_; my $ftp = Net::FTP->new($hostname); $ftp->login($user,$pass) or die; $ftp->quit; } ################################################### # MAIN ################################################### if (@ARGV != 2) { die "Usage: perl FtpLoginCheck.pl <passward.list> <hostname.list>\n" } open(FH, "<", $pass_file); while (my $file = <FH>) { chomp $file; my ($_user, $_pass) = split /,/, $file; $hash{$_user} = $_pass; } close(FH); open(FH, "<", $host_file); @hostname = <FH>; close(FH); foreach my $host (@hostname) { chomp $host; printf "%-15s %-25s %-20s\n","==============","$host: [START]","=============="; foreach my $user (sort keys %hash) { eval { &ftp_connect($host); }; if ($@) { print "Connect [Failure] $host\n"; last; } eval { &ftp_login($host,$user,$hash{$user}); }; if ($@) { print "Login [Failure] $user\n"; } else { print "Login [Success] $user\n"; } } printf "%-15s %-25s %-20s\n\n","==============","$host: [END]","=============="; }
1.FTPでログインが許可されているユーザー、パスワードのリストを作成。
[root@ha-01 tmp]# cat passwd.lst root,xxxxxxxx abcd,xxxxxxxx masatoshi,xxxxxxxx [root@ha-01 tmp]#
2.対象サーバのホストリストを作成。
[root@ha-01 tmp]# cat host.lst hadoop-slave1 hadoop-slave2 hadoop-slave3 [root@ha-01 tmp]#
3.実行結果
[root@ha-01 tmp]# ./FtpLoginCheck.pl passwd.lst host.lst ============== hadoop-slave1: [START] ============== Login [Failure] abcd Login [Success] masatoshi Login [Success] root ============== hadoop-slave1: [END] ============== ============== hadoop-slave2: [START] ============== Login [Failure] abcd Login [Success] masathoshi Login [Success] root ============== hadoop-slave2: [END] ============== ============== hadoop-slave3: [START] ============== Connect [Failure] hadoop-slave3 ============== hadoop-slave3: [END] ============== [root@ha-01 tmp]#