批量修改主机名脚本-创新互联

脚本思路:生成秘钥后,批量传输秘钥,根据hosts文件批量修改主机名。

目前创新互联公司已为超过千家的企业提供了网站建设、域名、网页空间、绵阳服务器托管、企业网站设计、天桥网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

运行环境:用户名统一是root,密码统一是123456

脚本

#!/bin/bash
# check expect first
#############################################################
passwd=123456
key=/root/.ssh/id_rsa
ip=`ifconfig eth0 | sed -n '2p'| cut -d: -f2 | cut -d" " -f1`
lname=`cat /etc/hosts | grep ^$ip | awk '{print $2}'`
# change local hostname
sed -i "s/^HOS.*/HOSTNAME=$lname/" /etc/sysconfig/network; hostname $lname
# ssh-keygen
if [ ! -f $key ];then
/usr/bin/expect <2 {print $1}'|grep -v ^#`
do
expect -c "
set timeout -1
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $dip
expect {
\"*yes/no*\" {exp_send \"yes\r\"; exp_continue}
\"*password:\" {send \"$passwd\r\"}
}
expect eof"
scp /etc/hosts $dip:/etc
name=`grep ^$dip /etc/hosts | awk '{print $2}'`
ssh $dip "sed -i "s/^HOS.*/HOSTNAME=$name/" /etc/sysconfig/network"
ssh $dip "hostname $name"
done

注:

  1. 直接执行脚本即可,不需要加参数;

  2. 使用ssh链接的时候,第一次需要输入“yes”来确认,而第二次不需要,这个脚本中ssh-copy-id这一部分,用到了expect的类似于if判断的语句,解决了这个问题;

  3. 秘钥传输成功以后,可以把scp /etc/hosts $dip:/etc替换成想要传输的文件;把ssh $dip "hostname $name"替换成想要执行的命令。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:批量修改主机名脚本-创新互联
文章起源:http://scyanting.com/article/ddcehj.html