#!/usr/bin/perl use POE qw(Component::Client::Telnet); my $self = POE::Component::Client::Telnet->new( # debug => 1, 'package' => 'Net::Telnet::Cisco', telnet_options => [ Timeout => 10, Prompt => '/bash\$ $/' ], # could put something here, or omit it ); POE::Session->create( inline_states => { _start => \&_start, callback => \&callback, opened => \&opened, logged_in => \&logged_in, who => \&who, }, ); sub _start { # preferred way #$self->open({ event => 'opened' },"sparky"); # alternative way $self->yield(open => { event => 'opened' } => "sparky"); } sub opened { # Wait for first prompt # $self->waitfor({ event => 'cont' },'/continue:.*$/'); $self->login({ event => 'logged_in' },"username","password"); # alternative way $_[KERNEL]->post($self->session_id() => login => { event => 'logged_in' } => "username" => "password"); } sub logged_in { $self->cmd({ event => 'who', 'wantarray' => 1 },"who"); } sub who { print @{$self->{result}}; $self->shutdown; } $poe_kernel->run(); exit;