set_hostname.sh

set_hostname.sh

#!/bin/bash
#-----------------<jihongrui@outlook.com>-----------------------
# 根据IP地址的后两段,设置hostname
# 192.168.11.22   set   22.11.domain.com

PTAH="/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin"
export PTAH

domain='domain.com'

# 记录本机IP至这个文件
ip_file='/etc/ssh/ip.pid'

# 取的本机的IP
function Get_rip(){
if [[ -f $ip_file ]] && [[ `awk -F \= '{print $2}' $ip_file` != "" ]];then
    RIP=`awk -F \= '{print $2}' $ip_file`
else

# 检测命令
which ip &>/dev/null
if [[ $? -ge 0 ]];then
    HOSTIPS=(`/sbin/ip addr |egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'|egrep -v '255|127\.0\.0\.1|0\.0\.0\.0'`)
else
    HOSTIPS=(`ifconfig |egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'|egrep -v '255|127\.0\.0\.1|0\.0\.0\.0'`)
fi

# 取默认网关IP的前三位 以和 IP 做比对
DEGAWAY1=`route -nee |grep 'UG' |awk '{print $2}'|awk -F \. '{print $1"."$2"."$3}'`
DEGAWAY2=`netstat -r | grep 'default' |awk '{print $2}'|awk -F \. '{print $1"."$2"."$3}'`
if [[ "${DEGAWAY1}" == "${DEGAWAY2}" ]];then
        DEGAWAY=${DEGAWAY2}
else
        DEGAWAY=${DEGAWAY1}
fi


# 取能连接外网的IP
for ip in ${HOSTIPS};
do
        ip3=`echo ${ip} |awk -F \. '{print $1"."$2"."$3}'`
        if [[ "${ip3}" == "${DEGAWAY}" ]];then
                if [[ $(ping -c 2 223.5.5.5 &>/dev/null ; echo $?) -eq 0 ]];then
                        RIP=${ip}
                else
                        echo "IP ERROR"
                        exit 1
                fi
        fi
done
echo "RIP=${RIP}" > $ip_file
fi
}

Get_rip

HOSTIP=${RIP}

HOST=$(echo $HOSTIP |awk -F\. '{print $4"."$3".${domain}"}')

if [[ ${HOST} != "" ]] && [[ $HOSTIP != "" ]]
        then
                hostname ${HOST}
                echo "${HOSTIP}  ${HOST}" >> /etc/hosts
                echo "127.0.0.1  ${HOST}" >> /etc/hosts
                sed -i 's#^HOSTNAME\=.*$#HOSTNAME\='$(echo ${HOST})'#g' /etc/sysconfig/network
fi
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • Ubuntu 常用命令大全 查看软件 xxx 安装内容 #dpkg -L xxx 查找软件 #apt-cache ...
    guiwuzhe阅读 2,603评论 0 14
  • 对一个文件的读取工作New 一个FileReader类首先顶一个已有的读取文件,然后利用读取一行的类实现读取有内容...
    sun_goden阅读 157评论 0 1
  • 以前人们都说七年之痒,我还不信呢!我比我真的相信了...我们的七年之痒看来是过不去了,我知道你的内心也很痛苦,有可...
    我就是我hxh阅读 155评论 0 0
  • 确实来说,已经过凌晨十二点了,25号已经到来半个小时了。回想今天的事情,今早出去上课碰见的第一个人是王玉刚,我称呼...
    小马克Wel阅读 176评论 0 0