用perl在hpux下自动修改操作系统密码出现下面的错误,请高人指点一下

用perl在hpux下自动修改操作系统密码出现下面的错误,请高人指点一下

在hpux上面,用perl中的expect工具来自动修改操作系统用户密码,出现的错误如下,手工执行passwd命令都是正常的。
Changing password for user111
pam_chauthtok: System error

======  代码如下: ======
#!/usr/bin/perl -w
use Expect;
$flag=0;
$user=$ARGV[0];
$oldpassword=$ARGV[1];
$password=$ARGV[2];
$start=Expect->spawn("passwd",$user);
$start->expect(5,['Old Password:',sub {my $self = shift;
                                       $self->send("$oldpassword\n");
                                       $flag=1;
                                       exp_continue;}],
                 ['Old password:',sub {my $self = shift;
                                       $self->send("$oldpassword\n");
                                       $flag=1;
                                       exp_continue;}],
['Enter existing login password:',sub {my $self = shift;
                                       $self->send("$oldpassword\n");
                                       $flag=1;
                                       exp_continue;}],
                 ['New password:',sub {my $self = shift;
                                       $self->send("$password\n");
                                       $flag=2;
                                       exp_continue;}],
                 ['New Password:',sub {my $self = shift;
                                       $self->send("$password\n");
                                       $flag=2;
                                       exp_continue;}],
        ['Re-enter new password:',sub {my $self = shift;
                                       $self->send("$password\n");
                                       $flag=3;
                                       exp_continue;}],
        ['Re-enter new Password:',sub {my $self = shift;
                                       $self->send("$password\n");
                                       $flag=3;
                                       exp_continue;}],
                       ['changed',sub {$flag=4;
                                       exp_continue;}]);
if ($flag=='1') {
exit 1;}
elsif ($flag=='2') {
exit 1;}
elsif ($flag=='3') {
exit 1;}
elsif ($flag=='4') {
exit 0;}
你这个操作系统不知道支持不支持


QUOTE:
原帖由 angling2005 于 2007-9-30 09:53 发表
你这个操作系统不知道支持不支持

我的操作系统版本是:HP-UX nj_scp1 B.11.11 U 9000/800 192424685 不限用户数的许可证
你用的包要用到这个模块IO::Tty 你看你安装测试下 看支持不


QUOTE:
原帖由 angling2005 于 2007-9-30 10:02 发表
你用的包要用到这个模块IO::Tty 你看你安装测试下 看支持不

怎么看有没有这个模块?能否再详细解释一下?多谢!
你到CPAN上 下一个这个模块  安装一下就知道你支持不支持这个包了
用 cpan
install Expect

安装下就知道了


QUOTE:
原帖由 lu.qinyuan 于 2007-9-30 09:36 发表
在hpux上面,用perl中的expect工具来自动修改操作系统用户密码,出现的错误如下,手工执行passwd命令都是正常的。
Changing password for user111
pam_chauthtok: System error

======  代码如下: ====== ...

Expect的一些用法.

建议用new Expect的方法, 之后设置debug level来看Expect每一次实际匹配到字符串.


另外, 确定系统每一步提示的大小写?
这2种情况真的都会存在吗?
'New password'
'New Password'
如果是, 既然处理过程相同, 用正则 //i 合并下即可