Shell编程利用循环生成连续的ip地址(或者连续的主机名称)

Shell编程利用循环生成连续的ip地址(或者连续的主机名称)

一.应用场景

个人在进行集群部署的时候为了方便集群服务器的管理,通常会编写一键启动或者一键部署的脚本,以hadoop集群为例子,网络上有很多的集群启动样本,但是基本上都是针对于3台左右的集群服务器来规定的,因为个人工作原因,常常需要部署几十台服务器,如果按照一般shell脚本,容易出现如下情况。

for host in bigdata1 bigdata2 bigdata3 bigdata4 bigdata5
 bigdata6 bigdata7 bigdata8 bigdata9 bigdata10 bigdata11
  bigdata12 bigdata13 bigdata14 bigdata15 bigdata16 bigdata17
   bigdata18 bigdata19 bigdata20 bigdata21 bigdata22 bigdata23
    bigdata24 bigdata25 bigdata26 bigdata27 bigdata28
#启动前28个集群服务
do
    echo ====================  开启$host  ====================
      ssh -yes $host /home/bigdata/module/hadoop-3.3.4/bin/yarn --daemon start nodemanager
	  ssh -yes $host /home/bigdata/module/hadoop-3.3.4/bin/hdfs --daemon start datanode
done

以上是部署28台hadoop集群的nm和dn的分发脚本,很明显,for语句后面太多服务器,看起来十分杂乱,因此需要对其进行一定程度的优化。

二.解决方案

观察host或者ip地址规律,使用while循环或者嵌套循环(当服务器大于255时需要嵌套循环),如下

#!/bin/bash
i=1
host=""
while ((i <= 100))
do
    host="192.168.1.$i"
    echo $host
    ((i++))
done

输出结果为ip为192.168.1.1-192.168.1.100
输出结果
而后将echo替换为for中的执行语句

 echo ====================  开启$host  ====================
      ssh -yes $host /home/bigdata/module/hadoop-3.3.4/bin/yarn --daemon start nodemanager
	  ssh -yes $host /home/bigdata/module/hadoop-3.3.4/bin/hdfs --daemon start datanode
#!/bin/bash
i=1
host=""
while ((i <= 100))
do
    host="192.168.1.$i"
     echo ====================  开启$host  ====================
      ssh -yes $host /home/bigdata/module/hadoop-3.3.4/bin/yarn --daemon start nodemanager
	  ssh -yes $host /home/bigdata/module/hadoop-3.3.4/bin/hdfs --daemon start datanode
    ((i++))
done

如果确定了主机名,可以将192.168.1.X更换为主机名(例如bigdataX)前提是hosts文件夹配置完毕,即可完成对应的代码优化

注意事项

这种方法只适用于连续的主机名或者ip地址的部署,如果需要部署的服务器地址不连续,可以考虑利用服务器的部署文档,将ip地址写入一个host中,定义一个连续的hostname,在编写shell语句后使用hostname调用,达到连续的效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值