my $timeout = 5; my $exp = Expect->new; $exp->raw_pty(1); $exp->spawn("su root"); $exp->log_stdout(0); $exp->expect($timeout, [ '-re', 'Password:\s*$' => sub { $exp->send("admin\n"); } ], [ timeout => sub { die "Timeout" } ], ); #waiting for #[root@ana-02 ~]# $exp->expect($timeout, [ '-re', '\][#%]\s*$' => sub {} ], [ timeout => sub { die "Timeout, no prompt" } ], ); $exp->log_stdout(1); my $result = $exp->send("dummy.pl\n"); { #Ignoring :: IO::Stty not installed, cannot change mode at test.pl line 22 local $SIG{__WARN__} = sub { my $warn = shift; if ($warn !~ /IO::Stty/) { print STDERR $warn; } }; $exp->interact(); } $exp->log_stdout(0); $exp->expect($timeout, [ '-re', '\][#%]\s*$' => sub { $exp->send(" exit\n"); } ], [ timeout => sub { die "Timeout" } ], ); $exp->soft_close(); my $status = $exp->exitstatus; print "$status\n";