Net::SSH::Perl模块,不能实现su切换为root吗?

Net::SSH::Perl模块,不能实现su切换为root吗?

1 #!/usr/bin/perl
      2
      3 use warnings;
      4 use strict;
      5
      6 use Net::SSH:erl;
      7
      8 my $ip_address = '192.168.1.110';
      9 my $port       = '6666';
     10 my $username   = 'aaa';
     11 my $password   = 'aaa';
     12
     13 my $ssh = Net::SSH:erl->new("$ip_address", "$port", debug => 1);
     14 $ssh->login( "$username", "$password" );
     15
     16 my ($out, $err, $exit ) = $ssh->cmd("su - root", "123456";
     17
     18
     19 print "out = $out\n";
     20 print "err = $err\n";
     21 print "exit = $exit\n";

输出如下:

0out =
err = standard in must be a tty

exit = 1


请问如何切换为root用户,没有在这个模块的文档里面找到切换root的相关说明?

用Net::SSH::Expect模块交互登陆很慢,兄弟们有什么好的办法,谢谢!
su 命令的密码是需要交互方式输入的 不是参数


QUOTE:
原帖由 DQP 于 2008-11-20 16:53 发表
su 命令的密码是需要交互方式输入的 不是参数

速度真快,请问有什么办法解决?
用Expect
一定要su么?
setuid可以满足需求么
用这个模块  Net::SSH::Expect
可以用send 和waitfor 方法


QUOTE:
原帖由 machine 于 2008-11-20 21:05 发表
用这个模块  Net::SSH::Expect
可以用send 和waitfor 方法

兄弟,这个模块试过了,奇慢,
setuid不行么?
直接以root用户ssh不可以么?
你的需求到底是什么啊?



QUOTE:
原帖由 DQP 于 2008-11-21 14:18 发表
setuid不行么?
直接以root用户ssh不可以么?
你的需求到底是什么啊?

是啊你也知道root的密码,为什么还要登陆后su呢


QUOTE:
原帖由 machine 于 2008-11-21 14:43 发表


是啊你也知道root的密码,为什么还要登陆后su呢

因为远程服务器设置的不允许root直接远程登陆,这样会安全很多,所以才需要su一下


其实小弟是想用perl实现批量修改服务器密码的功能。