秘钥推送脚本,批量修改主机名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了秘钥推送脚本,批量修改主机名相关的知识,希望对你有一定的参考价值。
在生产环境线上,服务器统一命名是非常重要的,它遵循了环境标准化,使运维工程师能够更方便的管理线上服务器,当出现问题时,能够快速的定位问题、排查问题、解决问题。
编写脚本思路:
1、基于ssh-key生产秘钥
2、基于ssh与其他节点完成第一次交互(yes/no)
3、基于ssh-copy-id实现远程批量推送秘钥
4、基于sed来修改不同集群的不同主机名
测试环境:
主机名 | IP |
[[email protected] ~]# | 10.10.73.148 |
[[email protected] ~]# | 10.10.73.149 |
[[email protected] ~]# | 10.10.73.192 |
一、以10.10.73.148(node1)节点为生成秘钥节点,推送给node2、node3,并修改主机名!
[[email protected] ~]# vim /tmp/lweim.sh #!/bin/bash #Version:1.0 #Author:wtc #Use:Change Hostname ip="148 149 192" key=umpay.com main() { if ! ‘rpm -q expect‘ &> /dev/null;then yum install expect -y &> /dev/null [[ $? -eq 0 ]] && echo "Install Success" || echo "Install Faile" [ -a /root/.ssh/id_rsa ] && rm -rf /root/.ssh/* Create_Key for n in $ip;do for i in 10.10.73.$n;do First_HandShake Push_Key done done else exit 1 fi } Create_Key() { echo "Creating RSA Key ...." `which expect` <<END &> /dev/null set timeout 60 spawn ssh-keygen expect "save" send "\r" expect "passparase" send "\r" expect "again" send "\r" expect eof END [[ $? -eq 0 ]] && echo "Creating RSA Success" || echo "Create RSA Key Faile" } First_HandShake() { echo "First HandShake with $ip" `which expect` <<END &> /dev/null set timeout 5 spawn ssh $i expect "(yes/no)" send "yes\r" expect eof END [[ $? -eq 0 ]] && echo "First HandShake with $i Success" || echo "First HandShake with $i Faile" } Push_Key() { echo "Push RSA Key to $i" `which expect` <<END &> /dev/null set timeout 60 spawn ssh-copy-id $i expect "password" send "$key\r" expect eof END [[ $? -eq 0 ]] && echo "Push Key to $i Success" || echo "Push Key to $i Faile" } main ##############[ 修改"node1"、"node2"主机名为"mysql_01"、"mysql_02" ]############## ip="148 149" declare -x x=1 for n in $ip;do for i in 10.10.73.$n;do ssh $i "sed -i s/^HOST.*/HOSTNAME=mysql_0$x/ /etc/sysconfig/network" let x++ done done ##############[ 修改"node3"的主机名为"umpay_01"] ############## ip="192" declare -x x=1 for n in $ip;do for i in 10.10.73.$n;do ssh $i "sed -i s/^HOSTNAME.*/HOSTNAME=umpay_0$x/ /etc/sysconfig/network" let x++ done done
测试结果:
[[email protected] tmp]# bash -x lweim.sh
主机名 | IP |
[[email protected]_01 ~]# | 10.10.73.148 |
[[email protected]_02 ~]# | 10.10.73.149 |
[[email protected]_01 ~]# | 10.10.73.192 |
本文出自 “wtc” 博客,请务必保留此出处http://wangtianci.blog.51cto.com/11265133/1843201
以上是关于秘钥推送脚本,批量修改主机名的主要内容,如果未能解决你的问题,请参考以下文章