perl 利用Net::SSH::Expect模块批量修改服务器密码

简介:
如果以下脚本可以批量修改服务器的密码,并且导出随机生成的密码
首先需要安装Net::SSH::Expect
安装方法:
#cpan
cpan>install  Net::SSH::Expect
然后一路回车
#!/usr/bin/perl

use strict;
use warnings;
use Net::SSH::Expect;

my @ssh_list;
my @array_list=(0..9,'a'..'z');# 生成随机种子
my $new_user_pass;
while (<>) {

$new_user_pass=join '', map{$array_list[int rand @array_list]}0..7;#生成随机密码 0..7表示8位密码
                @ssh_list=split/\s+/,$_;
        print $ssh_list[0]."正在修改密码\n";
        &ssh_test( "$ssh_list[0]", "$ssh_list[1]", "$ssh_list[2]", "$ssh_list[3]" );
}

sub ssh_test() {
        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         => 6,
        );

        open FI, ">>    /home/mcshell/newuser.txt" or die $!;##新密码所放的位置
        print FI "-" x 80, "\n";

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

        $ssh->waitfor( '\(yes\/no\)\?$', 2 ); #交互式修改密码,给予2秒的时间
        $ssh->send("yes\n");
        $ssh->waitfor( 'password:\s*$/', 2);
        $ssh->send("$ssh_list[3]");

        $ssh->send("su - root");                                 #    其实这里我本来的用户不是root,为了更好的扩展
        $ssh->waitfor( 'Password:\s*$', 2 );#    经常服务器不容许root直接登录的,所以要用其他
        $ssh->send("$ssh_list[3]"); #用户来切换root
        $ssh->waitfor( '#\s*', 2 );


        $ssh->send("passwd $ssh_list[2]");

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

        $ssh->waitfor( 'password:\s*$', 2 );
        $ssh->send("$new_user_pass");
        $ssh->waitfor( '#\s*', 2 );
        print FI "$host\t$port\t$user\t$new_user_pass\n";
        $ssh->close();

        close FI;
        print "修改完成\n";
        print "-" x 30, "\n";
}
使用方法:
[root@mysqlmaster ~]# cat oldpasswd.txt
192.168.1.91        22            root        fmnuy5ci
192.168.1.95        22            root        bortv8bb


[root@mysqlmaster ~]# ./sshpwd.pl oldpasswd.txt
192.168.1.91正在修改密码
修改完成
------------------------------
192.168.1.95正在修改密码
修改完成
------------------------------
查看新生成的密码文件
[root@mysqlmaster ~]# cat /home/mcshell/newuser.txt
--------------------------------------------------------------------------------
192.168.1.91        22            root        9f8mu1gs
--------------------------------------------------------------------------------
192.168.1.95        22            root        1p2p2y0y









本文转自 mcshell 51CTO博客,原文链接:http://blog.51cto.com/mcshell/929109,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
3月前
|
安全 Shell Linux
ssh密码忘记了怎么办
通过上述措施,不仅能够有效应对SSH密码遗忘的挑战,还能全方位加固SSH连接的安全,确保数据传输的无忧。
182 2
|
3月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
104 2
|
3月前
|
网络安全
Ubuntu14.04安装ssh服务器
Ubuntu14.04安装ssh服务器
70 0
|
5月前
|
网络安全 数据安全/隐私保护
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
1485 0
|
12天前
|
弹性计算 数据挖掘 应用服务中间件
阿里云轻量应用服务器68元与云服务器99元和199元区别及选择参考
目前阿里云有三款特惠云服务器,第一款轻量云服务器2核2G68元一年,第二款经济型云服务器2核2G3M带宽99元1年,第三款通用算力型2核4G5M带宽199元一年。有的新手用户并不是很清楚他们之间的区别,因此不知道如何选择。本文来介绍一下它们之间的区别以及选择参考。
261 87
|
5天前
|
存储 弹性计算 应用服务中间件
阿里云轻量应用服务器出新品通用型实例了,全球26个地域可选
近日,阿里云再度发力,推出了首款全新升级的轻量应用服务器——通用型实例。这款服务器实例不仅标配了200Mbps峰值公网带宽,更在计算、存储、网络等基础资源上进行了全面优化,旨在为中小企业和开发者提供更加轻量、易用、普惠的云计算服务,满足其对于通用计算小算力的迫切需求。目前,这款新品已在全球26个地域正式上线,为全球用户提供了更加便捷、高效的上云选择。
|
22天前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
|
21天前
|
存储 运维 安全
阿里云弹性裸金属服务器是什么?产品规格及适用场景介绍
阿里云服务器ECS包括众多产品,其中弹性裸金属服务器(ECS Bare Metal Server)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。分钟级的交付周期将提供给您实时的业务响应能力,助力您的核心业务飞速成长。本文为大家详细介绍弹性裸金属服务器的特点、优势以及与云服务器的对比等内容。
101 23
|
13天前
|
存储 人工智能 网络协议
浅聊阿里云倚天云服务器:c8y、g8y、r8y实例性能详解与活动价格参考
选择一款高性能、高性价比的云服务器对于企业而言至关重要,阿里云推出的倚天云服务器——c8y、g8y、r8y三款实例,它们基于ARM架构,采用阿里自研的倚天710处理器,并基于新一代CIPU架构,通过芯片快速路径加速手段,实现了计算、存储、网络性能的大幅提升。2025年,计算型c8y云服务器活动价格860.65元一年起,通用型g8y云服务器活动价格1187.40元一年起,内存型r8y云服务器活动价格1454.32元一年起。本文将为大家详细解析这三款实例的性能特点、应用场景以及最新的活动价格情况,帮助大家更好地了解阿里云倚天云服务器。