0

作为并发测试的一部分,我必须同时使用 telnet 登录到 linux 服务器。我最多需要 50 次登录到服务器。我可以使用 perl expect 编写一个简单的脚本,但是会话一旦进入循环中的下一个项目就会结束。有人可以帮忙解决这个问题吗?ALso 下面的实现是串行连接而不是同时连接。

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");
}
4

1 回答 1

1

您应该在 Perl 中完成所有工作:

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
}
于 2013-10-10T22:36:26.307 回答