由于近期时间颇紧,代码实现及测试暂时无暇顾及了,此处仅作思考记录:


依赖条件:
1、得知所有dhcp分配的IP(下文简称dip),以及要修改为的静态IP(sip)
2、有一个脚本,通过其配置文件,可修改本机的主机名,ip等信息(已完成)
3、两组ip以数组的形式,写入脚本配置文件
4、未修改状态下,dip online,sip必须offline.
5、未修改状态下,如果sip online,记录日志并跳过
6、dip 和 sip的数量应该是相等的,但不强制
7、修改成功后,dip可能online,sip必须online
8、修改成功的,对应sip写入/etc/hosts
9、修改成功后,删除原dip在/etc/hosts记录
10、修改成功后,删除sip和dip在脚本配置文件的对应信息
11、考虑当dip多于sip时,可以直接将其正在使用的dip改为sip(此功能可独立)
12、cluster必须是互信的


实现方法:
遍历dip数组:
   当dip online和sip offline满足,则继续,否则记录日志并跳出本次循环
       copy 配置文件到tmp目录,并做修改其为sip的配置
       通过dip推送至目标节点
       通过dip调用md5sum检测配置文件一致性,一致则下一步,否则记录日志跳出本次循环
           通过dip调用对应的脚本,考虑重启网络服务带来的延迟,可休眠3秒
           检测本次修改的sip是否成功,dip在刚释放可意味着其offline
           检测sip 和dip 状态:
               FUNC=删除配置文件中对应的sip、dip和/etc/hosts中的dip,并将sip写入/etc/hosts
               sip online and dip offline: FUNC
               sip offline and dip offline: FUNC ,记录状态日志
               dip online and sip online: FUNC ,记录状态日志
第11条功能过于简易,不再赘述.