当前位置: 首页 > news >正文

告别重复输入密码!用Linux expect脚本批量管理服务器,5分钟搞定自动化登录

告别重复输入密码用Linux expect脚本批量管理服务器5分钟搞定自动化登录每天登录十几台服务器重复输入密码是运维工程师的噩梦。我曾在一个紧急故障处理中因为连续输错三次密码导致账号被锁耽误了半小时黄金修复时间。这种低效操作不仅消耗精力更可能引发严重事故。而expect脚本正是解决这一痛点的利器——它能模拟人类交互行为自动完成密码输入、命令执行等重复操作。与传统SSH密钥对方案相比expect的优势在于兼容性强适用于必须使用密码认证的环境灵活度高可处理复杂交互流程如二次认证即装即用无需提前部署密钥到所有节点1. 环境准备与快速上手1.1 极简安装方案主流Linux发行版只需一条命令即可完成安装# CentOS/RHEL sudo yum install -y expect # Ubuntu/Debian sudo apt-get install expect -y验证安装是否成功expect -c puts Hello Expect正常情况会输出Hello Expect若报错请检查PATH环境变量是否包含/usr/bin/expect。1.2 第一个自动化脚本创建auto_login.exp文件内容如下#!/usr/bin/expect set timeout 10 spawn ssh admin192.168.1.100 expect password: send Pssw0rd!\r interact给脚本添加执行权限并运行chmod x auto_login.exp ./auto_login.exp注意首次连接时可能出现Are you sure you want to continue connecting (yes/no)?提示需在expect脚本中添加对应处理下文会详解2. 生产级脚本开发技巧2.1 多服务器批量管理通过参数化实现通用脚本#!/usr/bin/expect set ip [lindex $argv 0] set user [lindex $argv 1] set password [lindex $argv 2] spawn ssh $user$ip expect { yes/no { send yes\r; exp_continue } password: { send $password\r } } expect # { send df -h\r } expect eof调用方式./batch_ops.exp 192.168.1.100 root MyPass1232.2 超时与异常处理关键参数设置set timeout 30 # 全局超时30秒 expect { -timeout 5 password: { send $pwd\r } # 局部5秒超时 timeout { puts 连接超时; exit 1 } eof { puts 连接异常终止 } }推荐超时策略操作类型建议超时重试次数本地命令执行10秒2次内网SSH连接20秒3次跨机房操作60秒1次2.3 日志记录与调试在脚本开头添加log_file -a /var/log/expect_script.log log_user 1 # 同时输出到屏幕调试模式启动expect -d your_script.exp典型调试输出分析expect: does ssh: connect to host 192.168.1.100 port 22: Connection refused\r\n (spawn_id exp6) match glob pattern password:? no3. 实战案例自动化巡检系统3.1 架构设计├── hosts.list # 服务器清单 ├── commands.list # 待执行命令 ├── collector.sh # 主控脚本 └── templates/ # 报告模板hosts.list格式192.168.1.100,admin,SecurePwd123 192.168.1.101,root,MyPass4563.2 核心实现代码collector.sh片段while IFS, read -r ip user pass; do expect EOF spawn ssh $user$ip expect { yes/no { send yes\r; exp_continue } password: { send $pass\r } } expect # { send hostname date uptime\r expect -re . { set output $expect_out(buffer) } } send exit\r expect eof EOF done hosts.list3.3 性能优化方案并行执行parallel -j 10 ./collector.sh ::: $(seq 1 100)连接复用spawn ssh -o ControlMasteryes -o ControlPath~/.ssh/conn-%r%h:%p $user$ip结果缓存redis-cli set $ip-status $output EX 36004. 安全增强方案4.1 密码安全管理推荐方案对比方案优点缺点脚本加密无需额外配置存在被破解风险环境变量动态获取需维护变量文件Vault集成最高安全性架构复杂示例使用HashiCorp Vaultset password [exec vault kv get -fieldpassword secret/ssh_creds/$ip]4.2 操作审计实现在expect脚本中添加send logger -t EXPECT_SCRIPT \User $user executed script on $ip\\r审计日志格式Jun 15 14:30:01 server1 EXPECT_SCRIPT: User root executed script on 192.168.1.1004.3 防火墙策略建议最小化放行规则iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/24 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -d 10.0.0.0/24 -j ACCEPT在项目实践中我们团队通过expect脚本将服务器部署时间从平均45分钟缩短到7分钟。最关键的技巧是在expect块中使用正则表达式匹配动态提示符例如expect -re {\$ $|# $}可以同时匹配普通用户和root提示符。
http://www.rkmt.cn/news/1406259.html

相关文章:

  • Simulink FFT分析:从模型搭建到谐波解读实战指南
  • 【数据校验实战】用 AI 对比源数据库与目标数仓的数据一致性脚本编写
  • 阻抗匹配介绍
  • SAP-ABAP:条件判断与循环控制语句(7篇) 第二篇:进阶实战:多重条件嵌套与switch语句的选型对比
  • 【ChatGPT旅行规划辅助实战指南】:20年IT架构师亲测的7大避坑法则与实时行程优化公式
  • ChatGPT面试准备终极清单:1份Prompt=1次高保真模拟+1份弱点雷达图+1条升职级话术
  • Maven命令
  • 知乎盐选专栏作者都在偷偷用的ChatGPT提示工程:12个领域专属指令集(含法律/医学/职场类防翻车模板)
  • SpringBoot项目里,用SpringSecurity+JWT做权限控制,我踩过的那些坑都帮你填好了
  • 如何用AI短视频创作工具3分钟完成专业视频制作:Pixelle-Video完全指南
  • 别再只下载现成的了!手把手教你用Ollama+llama.cpp打造专属中文大模型(以Chinese-Mistral-7B为例)
  • 规则歧义全拆解,深度还原ChatGPT如何将“每轮限抽2张牌”误译为“永久弃牌”的底层token解析逻辑
  • ChatGPT旅行规划辅助:3步生成合规签证文案+动态预算追踪表(附可运行Prompt模板)
  • 鸣潮自动化助手:5分钟解放双手,告别重复刷本的终极方案
  • 【限时公开】头部音乐厂牌内部使用的ChatGPT歌词增强协议(含版权合规校验模块)
  • 不止于备份:用群晖NFS+CentOS 7.9搭建轻量级开发测试环境共享存储
  • COM3D2 MaidFiddler:打造你的专属女仆管家,实时编辑让游戏体验更自由
  • 为AI智能体构建本地持久化记忆:VEKTOR实战指南
  • LogExpert:Windows平台专业日志分析解决方案
  • 城市生命线供水管网在线监测管理系统方案
  • PM的“技术盲区“与“设计失控“:两大致命伤如何毁掉一个产品
  • 为你的RB5机器人系统加把锁:从dm-verity到安全启动的完整安全配置指南
  • PlantUML编辑器终极指南:专业UML绘图效率提升300%的完整方案
  • 2026北京市企业技术中心新规落地!2023vs2026核心变化一文读懂
  • 在自动化内容生成场景中利用Taotoken动态选择性价比最优模型
  • 基于多智能体强化学习的大规模RIS辅助无人机通信波束优化
  • 武契奇调侃买不起小米汽车 雷军高情商回应
  • 毕业写作提速新思路:paperxie 助力学子轻松攻克毕业论文撰写难题
  • STM32G030C8T6 串口高效通信实战:CubeMX配置与中断接收、printf重定向详解
  • 利用Taotoken Token Plan套餐为长期项目实现更可控的AI预算