一,基於單純的密碼驗證的情況:
1.安裝Net::SSH::Perl模組,安裝方法參照Perl模組安裝。
2.自動登入例子,我要用testuser使用者登陸到伺服器192.168.0.100執行df命令:
#!/usr/bin/perl -wuse strict;use Net::SSH::Perl;my $host = '192.168.0.196';my $user = 'root';my $password = 'pass';my $ssh = Net::SSH::Perl->new($host);$ssh->login($user,$password);my ($stdout,$stderr,$exit) = $ssh->cmd("df -h");$ssh->cmd("exit");if($stderr){ print "ErrorCode:$exit\n"; print "ErrorMsg:$stderr"; } else{ print $stdout; }exit $exit;
二,基於帶密碼(passphrase)的公開金鑰金鑰組認證的情況:
1.安裝Net::OpenSSH模組,安裝方法參照Perl模組安裝,其實這個模組比上面那個模組更強大,密碼登入的也可以用這個模組。
2.代碼例子,還是用testuser使用者登陸到伺服器192.168.0.100執行df命令:
#!/usr/bin/perl -wuse strict; use Net::OpenSSH;my $host = '192.168.0.100';my $user = 'testuser';my $passphrase = '123123';my $key = '/home/testuser/.ssh/id_rsa';my %param = ( user => $user, passphrase => $passphrase, key_path => $key, timeout => 10 );my $ssh = Net::OpenSSH->new($host,%param);my ($stdout,$stderr) = $ssh->capture2("df -h");if($stdout){ print $stdout; } else { print $ssh->error; $stderr and print $stderr; }
用cpan Net::SSH::Perl 安裝模組並提示成功後,運行指令碼出現了“Can't locate Math/Pari.pm in @INC“的錯誤。
運行安裝 perl -MCPAN -e 'install Math::Pari' 後解決
參考:http://www.cnblogs.com/morya/archive/2011/08/09/2132822.html
N天后,發現Net::SSH::Perl奇慢無比,改用SCP模組了。。。