[Perl] ssh 접속

Perl 2009. 8. 13. 07:56




#!/usb/bin/perl


# 사용법
# this.pl 'host:hostname.com' 'ID:아이디' 'PW:비밀번호' 'CMD:명령어'

use Expect;

%Params = ();

# 파라메터 세팅
SetParams();

# SSH 접속
my $exp = Expect->spawn("ssh -l $Params{'ID'} $Params{'host'}");
my $timeout = 100;
$retry = 0;

$exp->expect($timeout,
                     [ qr '(yes/no) ?'   => \&InputYes],
                     [ qr 'password: $' => \&InputPassword ],
                     [ qr '[#>\$] $' => \&ExeCmd ] );



# key 저장
sub InputYes
{
    my $lexp = shift;
    $lexp->send("yes", "\n");
    exp_continue;
}



# 비밀번호 입력
sub InputPassword
{
    my $lexp = shift;
    if ($retry > 0) {
        die "Login Error\n";
    }
    $lexp->send($Params{'PW'}, "\n");
    $retry++;
    exp_continue;
}

# 명령실행
sub ExeCmd
{
    my $lexp = shift;
    $lexp->send($Params{'CMD'}, "; exit\n");
    exp_continue;
}

# 파라메터 정렬
sub SetParams
{
    for ($i=0; $i<@ARGV; $i++) {
        @tmp = split(/:/, $ARGV[$i]);
        $Params{"$tmp[0]"} = $tmp[1];
    }
}



'Perl' 카테고리의 다른 글

[Perl] Expect 설치  (0) 2009.08.16
[Perl] Thread 사용하기  (0) 2009.08.12
Posted by bloodguy
,