作者:手机用户2502892503 | 来源:互联网 | 2024-11-25 13:52
在IT运维领域,经常遇到需要对多台Linux服务器执行相同任务的情况,比如批量添加用户。传统方法要求管理员逐一登录每台服务器手动操作,不仅耗时而且容易出错。为了解决这个问题,本文介绍如何利用Expect脚本实现跨服务器的用户批量管理。
最初尝试使用PHP-CLI中的ssh2模块来完成这项工作,但发现该模块存在较多未解决的问题,稳定性不佳,最终放弃了这一方案。在探索其他解决方案的过程中,发现了Expect工具。Expect是一种强大的交互式Shell编程语言,特别适合处理需要与程序进行交互的任务,如通过SSH远程执行命令等。
下面分享一个简单的Expect脚本示例,用于远程创建用户(确保目标服务器已安装Expect):
#!/usr/bin/expect
# 第一个参数为目标服务器的IP地址
set IP [lindex $argv 0]
# 目标服务器的登录用户名(通常是root)
set USER [lindex $argv 1]
# 登录密码
set PASSWD [lindex $argv 2]
# 要创建的新用户名
set Nuser [lindex $argv 3]
# 新用户的密码
set Npasswd [lindex $argv 4]
# 使用spawn命令启动SSH会话
spawn ssh -l $USER $IP
# 首次连接时可能需要确认主机密钥,之后直接输入密码
expect {
"yes/no" { send "yes\r"; exp_continue }
"password:" { send "$PASSWD\r" }
}
# 等待提示符出现
expect "*#"
# 执行创建用户命令
send "useradd -s /bin/bash -d /home/$Nuser $Nuser\r"
expect "*#"
# 设置新用户的密码
send "passwd $Nuser\r"
expect "*password:"
send "$Npasswd\r"
expect "*password:"
send "$Npasswd\r"
# 完成后退出
expect "*#"
send "exit\r"
以上脚本提供了一个基础框架,可以根据实际需求进行调整和扩展。例如,可以加入错误处理逻辑,或者支持更多的用户配置选项。通过这种方式,可以显著提升系统管理和维护的效率。