免费注册 查看新帖 |

Chinaunix

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

perl批量更改密码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-15 10:23 |只看该作者 |正序浏览
请大家多指正

#!/usr/bin/perl

use strict;
use warnings;
use Net::SSH::Expect;  
use String::MkPasswd qw(mkpasswd);


my $user = "user";
my $pass = 123456;
my $root_pass = 123456;
my $new_user_pass = mkpasswd(-length => 15, -minnum => 3, -minlower => 3 , -minupper => 3, -minspecial => 3);
my $port = 22;



open (FILE, "</var/bak/test/iplist") or die "can't open file: $!\n";
while (<FILE>) {
    print;
    &ssh_host( "$_", "$port", "$user", "$pass" );
}
close(FILE);


sub ssh_host() {
    my ( $host, $port, $user, $pass ) = @_;
    my $ssh = Net::SSH::Expect->new(
        host        => $host,
        port        => $port,
        password    => $pass,
        user        => $user,
        no_terminal => 0,
        raw_pty     => 1,
        timeout     => 5,
    );

    open (FH, ">> /var/bak/test/log_$host") or die "can't open file: $!\n";

    print FH "-" x 80, "\n";
    my $start_time = localtime;
    print FH "start \tat $start_time\n";

    $ssh->debug(0);
    $ssh->run_ssh() or die "SSH process couldn't start: $!\n";

    $ssh->waitfor( '\(yes\/no\)\?$', 5 );
    $ssh->send("yes\n");
    $ssh->waitfor( 'password:\s*$/', 5 );
    $ssh->send("$pass");

    $ssh->send("su - root");
    $ssh->waitfor( 'Password:\s*$', 5 );
    $ssh->send("$root_pass");
    $ssh->waitfor( '#\s*', 5 );

    print FH "root login ok. \n";

    $ssh->send("passwd");

    $ssh->waitfor( 'password:\s*$', 5 );
    $ssh->send("$new_user_pass");

    $ssh->waitfor( 'password:\s*$', 5 );
    $ssh->send("$new_user_pass");
    $ssh->waitfor( '#\s*', 5 );

    my $ls = $ssh->exec("id");
    print FH "$ls\n";
    print FH "chang password ok!!!!!!!\n";
    print FH "$new_user_pass\n";

    my $end_time = localtime;
    print FH "end \tat $end_time\n";

    $ssh->close();

    close FH;

    print "-" x 80, "\n";
}

论坛徽章:
0
29 [报告]
发表于 2010-08-10 12:43 |只看该作者
我也分享一个用perl写的修改密码的程序:

http://www.ywjs.net/read.php?tid-1040.html

经过验证这个已经成功修改密码, 不足之处在于多并发未实现.

论坛徽章:
0
28 [报告]
发表于 2010-08-08 19:04 |只看该作者
这个帖子真的不错,我要抓下来试试看!

论坛徽章:
0
27 [报告]
发表于 2010-06-26 11:31 |只看该作者
多谢分享.收藏

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
26 [报告]
发表于 2010-06-25 15:54 |只看该作者
普通用户貌似不能直接用单行命令改。
下面这样是不行的
$ echo 12345 | passwd user
输入现有的登录口令:
$

论坛徽章:
0
25 [报告]
发表于 2010-06-25 15:30 |只看该作者
回复 24# laputa73


   我以前用passwd命令在shell脚本中修改root密码,非root没试过.


ssh  后跟用户名@IP “cmd”就可以执行命令啊.

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
24 [报告]
发表于 2010-06-25 14:42 |只看该作者
本帖最后由 laputa73 于 2010-06-25 14:47 编辑
直接在shell脚本passwd修改多简单.
buzzle 发表于 2010-06-19 09:46



非root用户shell可以改密码么?
passwd命令好像是不允许用sh输入密码的?
还有ssh登录,sh怎么实现?
(chpasswd命令只允许root用的)
要实现普通用户登录并修改密码还是要用expect的。

expect模块的好处是可以模拟终端交互,可以直接用系统的ssh命令。不用单独安装其他的ssh相关模块。

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
23 [报告]
发表于 2010-06-25 14:37 |只看该作者
可以直接用expect模块。
你这样每次登陆都有可能wait 5s.很慢
应该yes/no/password一起等
可以并发。
比如一次起5个session

论坛徽章:
0
22 [报告]
发表于 2010-06-19 09:46 |只看该作者
直接在shell脚本passwd修改多简单.

论坛徽章:
0
21 [报告]
发表于 2010-06-10 16:23 |只看该作者
学习了
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP