下载后可任意编辑假如你有以下需求,本文章或许会对你有所帮助:1. 网络里 LINUX 服务器较多,缺乏统一管理的工具。2. 系统常常需要更改,假如定期更改所有服务器密码、批量更新特定文件等。3. 需实时获得所有服务器的运行信息,例如,需立即查看每台服务上装分别装了多少根内存条该怎么办,难道一台台登录 上去看?当然一般的系统监控软件是不会收集服务器有多少条内存条这样的信息的。4. 假如想往所有服务器上放一个文件,怎么办?5. 想在所有服务器上启动一个服务或执行一个脚本怎么办?大家在读下文时如有不理解的地方或其它问题,可以随时联系我,大家互相沟通,共同成长,我的 qq:317828332############################################做 Linux 系统管理以来,由于维护过比较大的网络,例如在飞信做支持的时候,面对上千台的服务器,有时候可能要对每台机子打一个补丁,或者是修改一个文件,假如只有 10 台服务器,那一一修改也就罢了,但是假如让你一台一台的登录 1000 台服务器只是为了去改一个文件,那一定痛苦死,并且效率低下,没有任何技术含量,假如一直做这种工作,那被称为 IT 民工也不能怪别人了,因为我一直想找一个可以批量管理的工具,后来发现了两种方式可以实现:1. 通过 SSH 密钥认证,这样登录到远程机器上后就不需要输入密码了,这样就可以通过脚本去批量登录到远程服务器并且修改你想要文件或操作等,但是这有一个缺点,就是这个在管理端的私钥你一定要保存好,万一管理服务器系统重装或其它原因导致私钥丢失,那你就没办法登录远程机器了。还有,假如需要管理的机器更改了 IP,那你还得重新把公钥 COPY 到那台机子上,这样管理起来可能不是那么灵活。2. 通过 expect 工具进行批量管理,expect 工具很强大,可以实现交互式管理,比如假如你想改密码,输入 passwd 命令后,系统会提示你输入 New Password: ,假如使用普通脚本的话,那你是没办法进行交互式的。但是 expect 就可以做到检测系统的返回值并且根据返回的提示来自动交互,如下例:#!/usr/bin/expect -fset ipaddress [lindex $argv 0] #设置命令行参数set passwd [lindex $argv 1] #参数 1 为 passwordset ipaddress [lindex $argv 0] #参数 0 为 IP 地址set timeout 1000 spawn ssh root@$ipaddressexpect { "yes/no" { send "yes\r";exp_continue } "Password:" { send "$passwd\r...