2014年(1)
分类: LINUX
2014-04-09 14:29:09
前言:基于shell的批量管理脚本,可对大规模服务器进行批量操作。
脚本特点:
一、包含tcl的expect交互登录代码(流程:先传送1个批量操作的脚本exc.sh到远程服务器,再登录远程服务器的普通用户,再切换root用户执行exc.sh,执行完后取回自定义的log到本地)。
二、使用fifo管道实现”多进程”,对大批量服务器并发的去操作,极大的提高了效率。本人的工作环境里,对250多台服务器的批量操作,1分多钟即可完成。
三、对远程服务器执行完后,会取回你自定义的log,通过分析log 能精确明了的得知远程服务器的执行情况。
脚本目录如图:
auto.sh:执行脚本
exc.sh:被传送到远程服务器上执行任务的脚本
result-count.sh:所有服务器执行完后,对返回日志分析
serverlist.txt:远程服务器列表
log.txt:日志文件
脚本的部分代码截图:
auto.sh:
exc.sh:
result-count.sh:
下面用实例来了解这套脚本的功能。
例:读取所有远程服务器此刻的cpu负载:
1、定义 exc.sh 里的 zz=`uptime`
2、执行auto.sh,选择需要执行的服务器组
3、执行中……
4、分析日志
可以看到 上次选的是all,但是10.0.1.82这台机器没返回日志 (原因是这台机器已经下架了,但我的serverlist里还有它,所以会显示它failed)
5、查看从各远程服务器返回的详细日志
可以看到各远程服务器的uptime情况。
后记:本例以 uptime 为例,来说明该脚本的流程。可以定义其它的各种需要的命令,如删除 安装 查询 同步等等,zz是想要得到的结果
如图,可以看到在exc.sh里有被注释掉的 zz
关于并发数:变量Task的值,这个随机器的性能来定。