#!/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];
}
}
# 사용법
# 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 |