以前のリビジョンの文書です


PerlからSSH

DAGのrepoを追加 rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

Net:SSHを追加

yum --enablerepo=rpmforge install perl-Net-SSH-Perl

yumでインストールされないモジュールを追加

perl -MCPAN -e shell
install Math::BigInt

install Math::BigInt::GMP

サンプルコード

#!/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.207");
$ssh->login("renbird", "dribner");
my ($stdout, $stderr, $exit) = $ssh->cmd('cat /etc/redhat-release');
print $stdout;
$ssh->cmd("exit");

しかし、この状態では2度目にコードを実行したらエラーとなるのです

ライブラリを修正して対応せう

cd /usr/lib/perl5/vendor_perl/5.8.8/Net/SSH/
cp -p Perl.pm Perl.pm.ORG

237行目付近に

if ($! =~ /Address already in use/i) {

というコードがありますので以下の通り書換えます。

#if ($! =~ /Address already in use/i) {
if ($! =~ /(Address|The socket name is) already in use/i || $! =~ /アドレスは既に/) {
perl/ssh.1285752616.txt.gz · 最終更新: 2010/09/29 09:30 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