Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20923
  • 博文数量: 1
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 28
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-09 10:01
文章分类

全部博文(1)

文章存档

2014年(1)

我的朋友

分类: LINUX

2014-04-09 14:29:09

前言:基于shell的批量管理脚本,可对大规模服务器进行批量操作。

脚本特点:

一、包含tclexpect交互登录代码(流程:先传送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的值,这个随机器的性能来定。

阅读(2318) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~