差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

perl:ssh [2010/09/29 09:57]
miyako
perl:ssh [2011/05/19 06:06] (現在)
miyako
ライン 1: ライン 1:
 ====== PerlからSSH ====== ====== PerlからSSH ======
 +===== yum(DAGリポジトリ)でインストール =====
 +
  
 DAGのrepoを追加 DAGのrepoを追加
ライン 37: ライン 39:
 ライブラリを修正して対応するとです ライブラリを修正して対応するとです
 <code> <code>
-cd /usr/lib/perl5/vendor_perl/5.8.8/Net/SSH/+cd /usr/lib/perl5/site_perl/5.8.8/Net/SSH/
 cp -p Perl.pm Perl.pm.ORG cp -p Perl.pm Perl.pm.ORG
 </code> </code>
ライン 52: ライン 54:
 if ($! =~ /(Address|The socket name is) already in use/i || $! =~ /アドレスは既に/) { if ($! =~ /(Address|The socket name is) already in use/i || $! =~ /アドレスは既に/) {
 </code> </code>
 +
 +秘密鍵と公開鍵を使ってリモートのサーバーを操作する場合
 +サンプルコード
 +<code>
 +#!/usr/bin/perl
 +use strict;
 +use Net::SSH::Perl;
 +use Net::SSH::Perl::Constants qw(:msg);
 +
 +my $ssh = Net::SSH::Perl->new("172.16.1.205",protocol=>'2,1' , identity_files => ['公開鍵']);
 +$ssh->login("USERNAME","");
 +my ($stdout, $stderr, $exit) = $ssh->cmd('ls /');
 +print $stdout;
 +print "ERROR:". $stderr ."\n";
 +print "EXIT CODE:". $exit."\n";
 +$ssh->cmd("exit");
 +</code>
 +
 +さっくり実行してみると
 +<code>
 +Invalid key file type 'PEM': Base class package "Class::ErrorHandler" is empty.
 +    (Perhaps you need to 'use' the module which defines that package first.)
 + at /usr/lib/perl5/vendor_perl/5.8.8/Convert/PEM.pm line 5
 +BEGIN failed--compilation aborted at /usr/lib/perl5/vendor_perl/5.8.8/Convert/PEM.pm line 5.
 +Compilation failed in require at /usr/lib/perl5/vendor_perl/5.8.8/Crypt/DSA/Key/PEM.pm line 5.
 +BEGIN failed--compilation aborted at /usr/lib/perl5/vendor_perl/5.8.8/Crypt/DSA/Key/PEM.pm line 5.
 +Compilation failed in require at (eval 55) line 1.
 +BEGIN failed--compilation aborted at (eval 55) line 1.
 + at /usr/lib/perl5/vendor_perl/5.8.8/Net/SSH/Perl/Key/DSA.pm line 65
 +</code>
 +なんてエラーが出力した。
 +
 +う~ん、鍵のタイプがPEMだぜ!そのタイプを使いたいなら"Class::ErrorHandler" をインストールしろやおりゃ!!
 +
 +ってな事をおっしゃってるのだろうね
 +
 +
 +CPAN使ってインストールしてみる
 +<code>
 +perl -MCPAN -e shell
 +install Class::ErrorHandler
 +</code>
 +おっ、無事にインストール出来たみたい。
 +
 +再度サンプルコードを実行したら、エラー無く実行できた(^^)
 +
 +===== CPANからインストールする場合 =====
 +
 +<code>
 +yum -y install gcc gmp-devel gmp expat-devel
 +yes '' | cpan -i Math::BigInt::GMP
 +yes '' | cpan -i Net::SSH::Perl
 +yes '' | cpan -i Math::BigInt::Pari
 +
 +なんとなく、これもインストールしてみたさ
 +yes '' | cpan -i Test::Pod
 +yes '' | cpan -i Test::Pod::Coverage
 +</code>
 +こっちの場合は余分なリポジトリをインストールする必要はないのだ
 +
 +
 +ライブラリを修正して対応するとです
 +<code>
 +cd /usr/lib/perl5/site_perl/5.8.8/Net/SSH/
 +cp -p Perl.pm Perl.pm.ORG
 +</code>
 +
 +===== 証明書の作成 =====
 +これがなけりゃ意味ないよねwww
 +
 +<code>
 +# ssh-keygen -t dsa -b 1024 -N ''
 +  パスフレーズ無しで作成してくれます
 +# cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys
 +# chmod 600 /root/.ssh/authorized_keys
 +
 +公開鍵は/root/.ssh/id_dsa
 +</code>
 +
 +
perl/ssh.1285754234.txt.gz · 最終更新: 2010/09/29 09:57 by miyako
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0