IP = "192.168.193.$i"
expect ha-switch.exp $IP '123DDFD'
done
这样此脚本就会调用
ha-switch.exp
脚本并登录到
192.168.193.100-200
的机器上分别执行
"/etc/init.d/heartbeat stop
命令了。
很强大吧,但使通过我使用的经验,我觉得
expect
有个缺点就是有慢,因为它是一台一台的去登录
然后执行命令,因为有的时候由于
DNS
解析或什么原因
,通过
SSH
登录到一台机子时可能需要等待
30s
才能登录进去,假如
1000
台机子的话那就需要
50
分钟才能完成在所有机器上的操作,对于要求在
1
分钟内实现数千台机器执行相同操作的需要来讲这显然达不到要求。
以上两种方法各有利弊,我个人建议在
50-100
台的小网络中可以考虑使用
SSH
认证或
expect
的方法。但是想像一下,如果我有一万台机器
,分别处于全国各地不同的网络中,要求我在
1
分钟内更改所有机器的
root
密码,显然以上两种方法均是做不到的,当然有这样大型网络的公司中国也并不多见,但是从技术的角度上来讲这还是有一定挑战性的,由于在网上一直找不到这样的工具,我就自己索性写了一个,经过多天的努力,终于将这个批量管理工具写完了,此工具是用的
Python
写的,基于
socket server
的模式,即需要在所有的需要管理的服务器上启动一个客户端(可能好多朋友不太喜欢这种还需要装客户端的东东),客户端会开启一个端口,你的管理服务器就是通过此端口与被管理端通信,然后对被管理端进行操作,你可以远程修改密码,查看系统信息,内存情况等操作,操作结果会在你的管理端实现显示出来(这也是我比较喜欢的地方,就跟在本地操作命令一样)。并且还可以向远程服务器批量
COPY
文件
,下面我就把这个工具在使用过程中的一些截图列出来:
bjnppb01:~/scripts/python_scripts/Remote_management_tool # python server.py ##
执行管理端
#############################################################################
# RMT(Remote Management tool) #
# #
# Version 1.0,2010-12-29 #
# Author:Alex Li #
# Email:[email protected],QQ:317828332 #
##################################################################################
please slect the following menu: #
功能列表
0 list servers
1 Scan agent status
2 login to remote server
3 Reboot all the remote servers(does't support)
4 Upload server list
5 excute command on all the aviliable servers
6 change password for all the servers
7 exit
Please enter the slected number:0 #
列出你要管理的远程服务器
192.168.193.133
192.168.193.134
192.168.193.142
192.168.193.137
192.168.193.143
192.168.193.144
192.168.193.144
192.168.193.145
192.168.193.146
192.168.193.173
192.168.193.174
192.168.193.175
192.168.193.176
192.168.193.177
192.168.193.178
192.168.193.179
please slect the following menu:
0 list servers
1 Scan agent status
2 login to remote server
3 Reboot all the remote servers(does't support)
4 Upload server list
5 excute command on all the aviliable servers
6 change password for all the servers
7 exit
Please enter the slected number:1 #
扫描服务器
状态
192.168.193.133 running
192.168.193.134 running
192.168.193.142 down
192.168.193.137 running
192.168.193.143 running
192.168.193.144 running
192.168.193.144 running
192.168.193.145 running
192.168.193.146 running
192.168.193.173 running
192.168.193.174 running
192.168.193.175 running
192.168.193.176 down
192.168.193.177 running
192.168.193.178 running
192.168.193.179 running
Please enter the slected number:2 #
登录
特定的一台服务器
Please enter the remote server IP: 192.168.193.178 #
输入
IP
You have successfully login to the remote server, now you can run most of the system command in this
mode ,but do not suggest
you to run the command such as top,tail -f,because right now I haven't find a way to support the continuous
data output
Please input the command:uname -a #
登录成功后执行命令
Received log from /root/Remote_management_tool/192.168.193.178.log
##########################################################
Linux bjnpmdf2 2.6.16.60-0.54.5-smp #1 SMP Fri Sep 4 01:28:03 UTC 2009 x86_64 x86_64 x86_64 GNU/Linux #
返回的结果
####################################################################################
Please input the command:hostname #
命令
Received log from /root/Remote_management_tool/192.168.193.178.log
##########################################################
bjnpmdf2 #
返回的结果
####################################################################################
Please input the command:
Please enter the slected number:4 #
上传服务器
IP
列表
Please enter the full path of your file: ../server.txt #
服务列器表文件文件名
192.168.193.100
192.168.193.101
192.168.193.102
192.168.193.103
192.168.193.104
192.168.193.105
192.168.193.106
192.168.193.107
192.168.193.108
192.168.193.109
192.168.193.110
192.168.193.111
192.168.193.112
192.168.193.113
192.168.193.114
192.168.193.115
192.168.193.116
192.168.193.117
192.168.193.118
192.168.193.119
192.168.193.120
192.168.193.121
192.168.193.122
192.168.193.123
192.168.193.124
192.168.193.125
192.168.193.126
192.168.193.127
192.168.193.128
192.168.193.129
192.168.193.130
192.168.193.131
192.168.193.132
192.168.193.133
192.168.193.134
Adding uploaded list to Server list.########################## done.
please slect the following menu:
0 list servers
1 Scan agent status
2 login to remote server
3 Reboot all the remote servers(does't support)
4 Upload server list
5 excute command on all the aviliable servers
6 change password for all the servers
7 exit
Please enter the slected number:0 #
列表上传后你再选择
0
就能看到你上传到的列表已经在管理列表中了
192.168.193.100
192.168.193.101
192.168.193.102
192.168.193.103
192.168.193.104
192.168.193.105
192.168.193.106
192.168.193.107
192.168.193.108
192.168.193.109
192.168.193.110
192.168.193.111
192.168.193.112
192.168.193.113
192.168.193.114
192.168.193.115
192.168.193.116
192.168.193.117
192.168.193.118
192.168.193.119
192.168.193.120
192.168.193.121
192.168.193.122
192.168.193.123
192.168.193.124
192.168.193.125
192.168.193.126
192.168.193.127
192.168.193.128
192.168.193.129
192.168.193.130
192.168.193.131
192.168.193.132
192.168.193.133
192.168.193.134
192.168.193.137
192.168.193.142
192.168.193.143
192.168.193.144
192.168.193.145
192.168.193.146
192.168.193.173
192.168.193.174
192.168.193.175
192.168.193.176
192.168.193.177
192.168.193.178
192.168.193.179
please slect the following menu:
0 list servers
1 Scan agent status
2 login to remote server
3 Reboot all the remote servers(does't support)
4 Upload server list
5 excute command on all the aviliable servers
6 change password for all the servers
7 exit
Please enter the slected number: 5 # ##
会登录
所有在运行了客户端的机器
It might will takes a few minutes to scan all the avialiable servers......
The fllowing servers are avaliable:
192.168.193.133
192.168.193.134
192.168.193.137
192.168.193.143
192.168.193.144
192.168.193.145
192.168.193.146
192.168.193.173
192.168.193.174
192.168.193.175
192.168.193.177
192.168.193.178
192.168.193.179
please input your command: hostname ###
此时你再输入的命令就是在所有的机器
上运行的了,看下面的输出结果
Received log from /root/scripts/python_scripts/192.168.193.133.log
##########################################################
bjnppb02
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.134.log
##########################################################
bjnpif01
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.137.log
##########################################################
bjnpbo01
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.143.log
##########################################################
bjnpeq04
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.144.log
##########################################################
bjnpeq05
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.145.log
##########################################################
bjnpif03
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.146.log
##########################################################
bjnpif04
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.173.log
##########################################################
bjnptest1
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.174.log
##########################################################
bjnptes2
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.175.log
##########################################################
bjnptes3
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.177.log
##########################################################
bjnpmdf1
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.178.log
##########################################################
bjnpmdf2
####################################################################################
Received log from /root/Remote_management_tool/192.168.193.179.log
##########################################################
bjnptes4
####################################################################################
这样就可以轻松的管理所有的机器了,考虑到第一次运行时需要在所有的机器上安装客户端,建议使用
expect
工具来一次批量安装,这样就可以一劳永逸了,有需要的同鞋请下载附件。
Remote_management_tool_v1.2.tar
(30 KB)