Your first sample works for me:
use Net::Telnet;
my $telnet = Net::Telnet->new(Timeout => 10);
$telnet->dump_log("dump.log");
$telnet->open("machine");
$telnet->login("user", "oass");
$telnet->close;
I get a bunch of stuff (the stuff that goes in and out over the
telnet connection) in dump.log. Are you actually trying to open
a connection? I doubt you'll get anything in your dump_log
file if you don't *do anything*. :)
Oh, and your second snippet is wrong. That's not a filehandle;
that's a diamond-operator *read* from a filehandle. STDOUT
is the filehandle, <STDOUT> is you reading from the
filehandle. You want
$telnet->dump_log(*STDOUT);
| [reply] [d/l] [select] |
I should have just posted this in the first place; anyway, this is my weak attempt at automating a mundane Apache test, trying to telnet in to port 80 and doing a HTTP GET. It's probably not what Net::Telnet was meant to do.
#!/usr/bin/perl -w
use strict;
use Time::HiRes qw( time tv_interval );
use Net::Telnet ();
my $hosts = join ' ', @ARGV;
unless ($hosts){
die "Usage: ruffbench <host> [<host2> <host3> ...]\n";
}
my $port = '80';
my $t = new Net::Telnet;
my $get = "GET / HTTP/1.0\n\n";
my $output;
foreach my $host ($hosts) {
print "Connecting to $host. Starting timer.\n";
print $t->dump_log(*STDERR); # no debugging is seen! :|
my $start = [ time() ];
$t->open(Host=>$host, Port=>$port);
print "Connected to $host. Sending request...\n";
print $t->waitfor(String=>"HTTP", Timeout=>5);
$t->print($get);
print $t->waitfor(String=>"Content-Type", Timeout=>5);
my $end = [ time() ];
$t->close;
print "Connection closed. Timer stopped.\n\n";
print "Time for simple GET from $host: "
. tv_interval($start, $end)
. " seconds.\n";
}
I'm not sure why, but I get no debugging info, even if I swap out *STDERR with, say, "dump.log".
Humbly,
Adam | [reply] [d/l] |