先查看linux版本
[root@localhost ~]# cat /etc/redhat-release
主机名一般默认为 localhost.localdomain,可通过hostname 查看
[root@localhost ~]# hostname
localhost.localdomain
centos7
1、修改/etc/hostname文件,将localhost.localdomain改成自己定义的主机名
vim /etc/hostname
2、修改/etc/hosts文件,方便访问本机主机名时能解析出本机ip地址
sed -i 's/localhost.localdomain/local-192-168-203-80/g' /etc/hosts
3、重启使主机名生效,可使用hostname查看
reboot
centos6
1、修改/etc/sysconfig/network,将自己定义的hostname添加到 HOSTNAME= 之后
vim /etc/sysconfig/network
2、修改/etc/hosts文件,方便访问本机主机名时能解析出本机ip地址
sed -i 's/localhost.localdomain/local-192-168-203-80/g' /etc/hosts
3、重启使主机名生效,可使用hostname查看
reboot
临时修改可直接使用hostname接主机名,su重新登录即可显示,但是重启失效
hostname local-192-168-203-80
使用脚本修改主机名
#!/bin/bash
# 获取centos版本
version=`cat /etc/redhat-release |awk '{print $4}'|awk -F'.' '{print $1}'`
# 获取ip路径
path=/etc/sysconfig/network-scripts
# 判断并修改主机名文件和hosts文件
if [ $version == '7' ];then
ip=`awk -F'=' '/^IP/ {print $2}' $path/ifcfg-ens33|tr '.' '-'`
echo "local-$ip" > /etc/hostname
sed -i "s/localhost.localdomain/local-$ip/g" /etc/hosts
elif [ $version == '6' ];then
ip=`awk -F'=' '/^IP/ {print $2}' $path/ifcfg-eth0|tr '.' '-'`
sed -i "/^HOSTNAME=/ s/localhost.localdomain/local-$ip" /etc/sysconfig/network
sed -i "s/localhost.localdomain/local-$ip/g" /etc/hosts
fi
# 确认是否重启
read -p "Rboot now(y/n)?" instring
if [ $instring == "y" ];then
reboot
elif [ $instring == "n" ];then
echo "Quit!!!"
exit 1
esle
echo "error!!!"
exit 2
fi
如果需要批量修改主机名,可以使用ansible的script模块在中控机上进行操作
ansible hostname -m script -a "path"