免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 24430 | 回复: 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
2 [报告]
发表于 2010-03-15 10:32 |只看该作者
nice, 值得参考。

论坛徽章:
0
3 [报告]
发表于 2010-03-15 10:39 |只看该作者
我是新手,还请仙子JJ给优化一下,Expect模块好像不能并发,只能一台一台的更改,如果有1000台SERVER的话速度还是比较慢.

论坛徽章:
0
4 [报告]
发表于 2010-03-15 10:52 |只看该作者
同求并发方法!

论坛徽章:
0
5 [报告]
发表于 2010-03-15 11:47 |只看该作者
我是新手,还请仙子JJ给优化一下,Expect模块好像不能并发,只能一台一台的更改,如果有1000台SERVER的话速度还 ...
trt2008 发表于 2010-03-15 10:39



    应该叫仙子MM

论坛徽章:
0
6 [报告]
发表于 2010-03-15 11:47 |只看该作者
多线程自己处理一下

论坛徽章:
0
7 [报告]
发表于 2010-03-15 11:51 |只看该作者
我是新手,还请仙子JJ给优化一下,Expect模块好像不能并发,只能一台一台的更改,如果有1000台SERVER的话速度还 ...
trt2008 发表于 2010-03-15 10:39


不是Expect不能并发,是你自己没有设计成并发模型。

论坛徽章:
0
8 [报告]
发表于 2010-03-15 11:56 |只看该作者
好的,我再看看,多谢仙子MM

论坛徽章:
0
9 [报告]
发表于 2010-03-17 13:08 |只看该作者
Net::SSH::Expect  模块慢的要死!

论坛徽章:
0
10 [报告]
发表于 2010-03-18 18:40 |只看该作者
同意楼上
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP