使用expect批量修改Linux服务器密码与添加用户

版权申诉
5星 · 超过95%的资源 1 下载量 64 浏览量 更新于2024-08-16 1 收藏 79KB PDF 举报
"该文档是关于远程批量修改Linux服务器密码的脚本归类,主要介绍了如何使用expect脚本来实现这一操作。" 在管理大量Linux服务器时,有时需要对所有服务器进行统一的操作,如批量修改密码或创建新用户。在这种情况下,手动逐台操作既耗时又效率低下。文档中提到了一种解决方案,即使用expect脚本,它能够自动化处理与远程服务器的交互过程,大大提高了工作效率。 Expect是一个Tcl扩展,专门设计用于自动化命令行接口的交互。在这个场景下,expect可以模拟人类用户的行为,自动输入密码、响应提示,从而实现批量修改远程Linux服务器的root密码以及创建新用户。 以下是使用expect批量修改密码的基本步骤: 1. 首先,你需要一个包含所有服务器IP地址的列表,如示例中的`iplist`文件。 2. 创建一个shell脚本(如`shell.sh`),这个脚本会读取IP列表并调用expect脚本。shell脚本接受两个参数:IP列表的路径和expect脚本的路径。 3. 在shell脚本中,使用`cat`命令读取IP列表,并通过`while`循环逐个处理每一行(即每个IP地址)。然后调用expect脚本,将当前的IP地址作为参数传递。 4. expect脚本(如`adduser`)接收IP地址作为参数。在这里,设置变量来存储登录用户名、密码、要修改的用户名、新密码、新增用户的用户名和密码。 5. 使用`spawn ssh`启动一个新的SSH连接到指定的IP地址,设置超时时间,并定义命令提示符。 6. 在expect脚本中,通过`send`命令发送登录凭证,例如`send "$loginuser\r"`和`send "$loginpass\r"`,模拟用户登录。 7. 登录成功后,执行相应的命令,如`passwd $passuser`来修改指定用户的密码,或者`useradd -m $newusername`和`passwd $newusername`来创建新用户并设置密码。 8. 完成所有操作后,关闭SSH连接,然后继续处理下一个IP地址,直到列表结束。 通过这种方法,你可以高效地对大批量的Linux服务器进行批量密码修改或用户创建等操作,而无需手动干预。这在系统维护和管理中是非常实用的工具,尤其适用于拥有大量服务器的环境。