Hi If I run the code below as a perl script, the script does make a ssh connection,login and run a command. If I run the same code in a dancer get route, the login works. But after the login, the session output shows up in den terminal where I started dancer and not in the virtual tty. Is there something special, when using tty's in a dancer application? use Net::Telnet; use Data::Dumper; my $pty = spawn( 'ssh', '-l', 'test', 'localhost' ); my $s = Net::Telnet->new( -fhopen => $pty, -telnetmode => 0, -output_record_separator => "\r", ); my $rc = $s->waitfor('/.*Password.*/'); $rc = $s->print('test'); $rc = $s->waitfor('/.*test@.*>.*/'); $rc = $s->print('uname -a'); $rc = $s->waitfor('/.*test@.*>.*/'); die Dumper $s->lastline; sub spawn { my (@cmd) = @_; my ( $pid, $pty, $tty, $tty_fd ); ## Create a new pseudo terminal. use IO::Pty (); $pty = IO::Pty->new(); ## Execute the program in another process. if ( !( $pid = fork ) ) { # child process use POSIX (); POSIX::setsid; $tty = $pty->slave; $pty->make_slave_controlling_terminal(); $tty_fd = $tty->fileno; close $pty; open(STDIN,"<&$tty_fd"); open(STDOUT, ">&$tty_fd"); open(STDERR,'>&STDOUT'); close $tty; ## Execute requested program. exec @cmd; } # end child process return $pty; } # end sub spawn Thanks for your help. Kind regards Lukas