2013-10-10 2 views
0

동시 테스트의 일부로 텔넷을 동시에 사용하는 리눅스 서버에 로그인해야합니다. 서버에 최대 50 개의 로그인이 필요합니다. perl expect를 사용하여 간단한 스크립트를 작성할 수 있지만 루프의 다음 항목으로 이동하면 세션이 끝납니다. 누군가 이렇게하는 방법을 도울 수 있습니까? 또한 아래의 구현은 연속적으로 연결을 수행하며 동시에 연결을 수행하지 않습니다.perl을 사용하는 리눅스 머신 동시 로그인

+0

전화'수면 999;'스크립트가 종료되지 않도록? – mob

+0

나는 영원히 남을 수 있습니다. 내가 동시에 로그인해야하는 경우 어떻게 해야할지 잘 모릅니다. 내 질문도 업데이트했습니다. – Leo

답변

1
당신은 펄의 모든 작업을 수행해야합니다

for(my $i = 1; $i <= 5; $i++) { 

    my $exp = Expect->spawn("telnet abc") or die "Cannot spawn telnet: $!\n"; 

    $exp->expect($timeout, "Login:"); 
    $exp->send("$username\n"); 

    $exp->expect($timeout, "Password:"); 
    $exp->send("$password\n"); 
} 
:

my %users = (
    'name1' => 'pw1', 
    'name2' => 'pw2', 
    # ... 
    'name50' => 'pw50', 
); 
my @sessions; 

while (my ($user, $pass) = each %users) { 
    my $exp = Expect->spawn("telnet abc") 
     or die "Cannot spawn telnet: $!\n"; 
    $exp->expect($timeout, "Login:"); 
    $exp->send("$user\n"); 
    $exp->expect($timeout, "Password:"); 
    $exp->send("$pass\n"); 
    push @sessions, $exp; 
} 

# now that you're all logged in, logout 
for my $exp (@sessions) { 
    $exp->send("exit\n"); 
    $exp->expect('eof'); # I'm not sure this is correct 
} 
관련 문제