使用Shell批量修改Linux服务器的IP --- shell百例

最近有一个给其他公司搭建集群的项目,目前机房有100台左右服务器,过几天差不多有80台服务器需要修改IP地址,所以打算通过虚拟机写出一个批量修改IP的shell脚本,虽然说修改IP这种事情最好不用shell来完成,但是我真不想一台一台的修改IP,而且脚本经过多遍测试,不会出现问题,且目前机房机器都是新机器没有任何业务。

  • 环境准备
主机名称Ipv4地址
host1(PC服务器)

ens33: 192.168.4.1

ens34: 192.168.2.1

host2

ens33: 192.168.4.2

ens34: 192.168.2.22

host3

ens33: 192.168.4.10

ens34: 192.168.2.33

host4 

ens33: 192.168.4.20

ens34: 192.168.2.44

  1. 首先需要进行PC服务器到目标主机的免密登录
    [ mod_ip]# ssh-keygen -f /root/.ssh/id_rsa -N ‘‘  #通过命令创建使用rsa算法的私钥和公钥
    Generating public/private rsa key pair.
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:IjWy+w0cpresY+0KLP/+p+svF7ndcBy1Eb7IkUeKuNM 
    The key‘s randomart image is:
    +---[RSA 2048]----+
    |              o. |
    |         . . =o  |
    |    . o . . +.oo |
    |     + . o ..+.. |
    |    o + S.E.o..  |
    | .   * oo.. o    |
    |. o o.+  + +     |
    | o .o+o++ . .    |
    |  .+=BXBo        |
    +----[SHA256]-----+
     [ mod_ip]# for i in 2 10 20; do ssh-copy-id 192.168.4.$i; done    # 通过命令给其他3台服务器传递公钥
  2. 修改PC服务器的ssh配置文件,/etc/ssh/ssh_config,向文件的末尾添加两个行参数
vim /etc/ssh/ssh_config
... ...
ServerAliaveInterval     1    # client每个1秒发送一次请求给server
ServerAliaveCountMax  1    # client发出请求后,server没有相应次数达到1,就自动断开连接

# 设置该参数的目的:因为脚本涉及到先通过ssh连接到目标主机,然后修改网卡文件后,重启网络服务,此时如果不修改此参数,client则会一直等待服务器的相应。执行完该脚本后可以把这两个参数给注释掉。

相关推荐