自动化运维之批量修改主机名

自动化运维之批量修改主机名

背景:

某行在一大数据项目中采购了一百多台服务器,客户要求服务器尽快上线,因数量较多,逐一手工登陆去修改,工作量很大,也是单调的机械劳动。鉴于此,使用脚本进行批量更改。
脚本开发思路:

考虑到在其中某一台机器上建立公钥私钥,把它的公钥一次性拷贝给其他机器,从而建立这台机器到其他机器的授信,并且,为了保证这个过程的无须手工干预,需要用expect脚本解决交互问题。

接着,使用expect脚本与shell脚本相结合的方式,对主机名字进行批量更改。为了永久修改,还需要修改其他机器的/etc/sysconfig/network 文件中的HOSTNAME字段的名称,使其与刚刚用hostname修改的主机名一致。

脚本开发步骤:

使用脚本生成公钥私钥,脚本如下:
#!/bin/bash
ssh-keygen  -t  rsa   -P ''   -f   '/root/.ssh/id_rsa'
查看下生成的公钥私钥,命令如下:
[root@h3c .ssh]# cd /root/.ssh && ll

建立一个存有ip地址与主机名对应的文件,内容如下:

[root@h3c kewai]# cat /root/ip.txt

192.168.100.113,topcheer

192.168.100.114,huawei

说明:逗号是为了使用 awk -F “,” 也可以使用其他的分隔符。

下面的expect脚本是用来拷贝公钥到其他机器的,expect脚本替我们处理了交互问题

[root@h3c kewai]# cat ssh-copy-id-batch.exp

#!/usr/bin/expect

set ip [lindex $argv 0]

set timeout 60

set password “root”

spawn ssh-copy-id -i root@$ip

expect {

“yes/no” {exp_send “yes\r”;exp_continue}

“*password:” {exp_send “$password\r”}

}

expect eof

exit

通过下面的bash脚本调用上面的expect脚本,从而批量把公钥拷贝给其他机器

[root@h3c kewai]# cat ssh-copy-id-batch.sh

#!/bin/bash

for i in $(awk ‘{print $1}’ /root/ip.txt)

do

ip= ( a w k − v I P = " (awk -v IP=" (awkvIP="i" ‘{if(IP==$1) print $1}’ /root/ip.txt|awk -F"," ‘{print $1}’)

name= ( a w k − v I P = " (awk -v IP=" (aw

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值