Linux修改主机名脚本-不重启-支持RedHatSUSE

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux修改主机名脚本-不重启-支持RedHatSUSE相关的知识,希望对你有一定的参考价值。

需要用脚本修改主机名,涉及RedHat、SUSE系统,并且要求修改立即生效且不重启,下面就是我的脚本。

使用脚本的方法如下:

1 首先创建一个脚本文件,假如命名为ModifyHostname.sh: touch ModifyHostname.sh

2 然后给这个文件给这个文件赋予执行权限:chmod a+x ModifyHostname.sh

3 把下面的脚本内容,复制到ModifyHostname.sh文件中

4 执行脚本

sh ModifyHostname.sh Newhostname   #其中Newhostname就是新主机名

 

#!/bin/bash
PATH=/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin
export PATH

New_Hostname=$1
OSRelease=`lsb_release -i|awk -F : {print $2}|sed s/\t//g`

#1 Modify /etc/hosts or add one loop entry
Old_Hostname=`grep ${HOSTNAME} /etc/hosts|wc -l`
if [ "$Old_Hostname" != "0"x ]; then
    sed -i "s/${HOSTNAME}/${New_Hostname}/g" /etc/hosts
else
    echo "127.0.0.10 ${New_Hostname}">>/etc/hosts
fi

#2 Modify different OSs hostname 
if [[ ${OSRelease} =~ SUSE ]]; then
    echo "this is SUSE machine";
    #modify /etc/HOSTNAME file
    echo ${New_Hostname}>/etc/HOSTNAME;
    #immediate effect
    /etc/rc.d/boot.localnet stop;
    /etc/rc.d/boot.localnet start;
elif [[ ${OSRelease} =~ RedHat ]]; then
    echo "this is RedHat machine";
    sed -i "s/${HOSTNAME}/${New_Hostname}/g" /etc/sysconfig/network;    
else 
    echo "this is donnotknow";
fi

#3 Modify varible
hostname ${New_Hostname}
export HOSTNAME=${New_Hostname}

echo "Hostname modify successfull!"
#今天在写一个脚本遇到问题,----需要在sed中引入shell变量,在网上搜了变天才找到,经过测试
#
#这四种方法都可用,在这里跟大家分享下,=---同时谢谢netman大哥,前辈就是前辈哈哈
#
#1.eval sed ’s/$a/$b/’ filename
#2.sed "s/$a/$b/" filename
#3.sed ’s/’$a’/’$b’/’ filename
#4.sed s/$a/$b/ filename

 

以上是关于Linux修改主机名脚本-不重启-支持RedHatSUSE的主要内容,如果未能解决你的问题,请参考以下文章

如何在Linux shell中获取本机主机名

Linux基础命令---显示主机名hostname

Redhat修改主机名及网络配置

Linux命令之修改主机名hostnamectl

Redhat6 网卡设置 IP地址及主机名配置

linux 修改主机名