如何通过perltelnet设置远程服务器的shell



如何通过perl telnet将远程服务器shell设置为bash?

我的代码如下:

$telnet = Net::Telnet->new(Timeout=>90,Errmode=>'die');
$telnet->open($ipAddress);
$telnet->login($username,$password);
$telnet->waitfor('/$/');
$telnet->print("exec bash");
print "after bash";
print $telnet->cmd("ls -lrt");
print $telnet->cmd("cd $homePath");

在上面的代码中,在exec-bash语句之后,没有任何命令被执行。我需要将远程shell设置为bash,因为在这几行之后我需要运行的一些进程需要env设置。

请让我知道我该怎么做。

等待命令提示符的正则表达式是错误的

$telnet->waitfor('/$/');

尝试

$telnet->waitfor('/$ $/');

更好的是,请参阅Net::Telnet 3.04 doc:中的第一个示例

my $host = 'your_destination_host_here';
my $user = 'your_username_here';
my $passwd = 'your_password_here';
my ($t, @output);
## Create a Net::Telnet object.
use Net::Telnet ();
$t = new Net::Telnet (Timeout  => 10);
## Connect and login.
$t->open($host);
$t->waitfor('/login: ?$/i');
$t->print($user);
$t->waitfor('/password: ?$/i');
$t->print($passwd);
## Switch to a known shell, using a known prompt.
$t->prompt('/<xPROMPTx> $/');
$t->errmode("return");
$t->cmd("exec /usr/bin/env 'PS1=<xPROMPTx> ' /bin/sh -i")
    or die "login failed to remote host $host";
$t->errmode("die");
## Now you can do cmd() to your heart's content.
@output = $t->cmd("uname -a");
print @output;

相关内容

  • 没有找到相关文章

最新更新