免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2759 | 回复: 7
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-30 09:36 |只看该作者 |倒序浏览
在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;}

论坛徽章:
0
2 [报告]
发表于 2007-09-30 09:53 |只看该作者
你这个操作系统不知道支持不支持

论坛徽章:
0
3 [报告]
发表于 2007-09-30 09:57 |只看该作者
原帖由 angling2005 于 2007-9-30 09:53 发表
你这个操作系统不知道支持不支持

我的操作系统版本是:HP-UX nj_scp1 B.11.11 U 9000/800 192424685 不限用户数的许可证

论坛徽章:
0
4 [报告]
发表于 2007-09-30 10:02 |只看该作者
你用的包要用到这个模块IO::Tty 你看你安装测试下 看支持不

论坛徽章:
0
5 [报告]
发表于 2007-09-30 10:32 |只看该作者
原帖由 angling2005 于 2007-9-30 10:02 发表
你用的包要用到这个模块IO::Tty 你看你安装测试下 看支持不

怎么看有没有这个模块?能否再详细解释一下?多谢!

论坛徽章:
0
6 [报告]
发表于 2007-09-30 10:38 |只看该作者
你到CPAN上 下一个这个模块  安装一下就知道你支持不支持这个包了

论坛徽章:
0
7 [报告]
发表于 2007-09-30 10:47 |只看该作者
用 cpan
install Expect

安装下就知道了

论坛徽章:
0
8 [报告]
发表于 2007-09-30 13:20 |只看该作者
原帖由 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 合并下即可
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP