shell 脚本 更新或者添加host ,并且增加hostname映射到hosts (修改)

有些服务需要在hosts中映射hostname 和 127.0.0.1 ,例如sudo ,新增方法updateHostName

 

脚本可以根据传入的参数进行对 /etc/hosts 更改或者添加host

例如执行 sudo ./changeHost.sh blog.duplicatedcode.com 192.168.1.222

域名是固定的,外网ip不断变化

# !/bin/sh
in_ip=${1}
in_url=${2}
local_ip="127.0.0.1"

#更改host
updateHost()
{
# read
  inner_host=`cat /etc/hosts | grep ${in_url} | awk '{print $1}'`
  if [ ${inner_host} = ${in_ip} ];then
     echo "${inner_host}  ${in_url} ok"
  else
     if [ ${inner_host} != "" ];then
        echo  " change is ok "

      else
         inner_ip_map="${in_ip} ${in_url}"
         echo ${inner_ip_map} >> /etc/hosts
         if [ $? = 0 ]; then
           echo "${inner_ip_map} to hosts success host is `cat /etc/hosts`"
         fi
         echo "shuld appand "
     fi
  fi
}
#  hostName
updateHostName()
{
inner_hostName=`hostname`
inner_local_ip=${local_ip}
inner_host_count=`cat /etc/hosts | grep ${inner_hostName} | awk '{print $1}' |grep -c ${local_ip}`
inner_host=`cat /etc/hosts | grep ${inner_hostName} | awk '{print $1}'`
if [ ${inner_host_count} != 0 ]; then
     return
fi
if [ ${inner_host} = ${inner_local_ip} ];then
   echo "127.0.0.1 ${inner_hostName} already add "
else
   if [ ${inner_host}="" ]; then
     inner_ip_map="${inner_local_ip} ${inner_hostName}"
     echo ${inner_ip_map} >> /etc/hosts
     if [ $?=0 ];then
        echo " ${inner_ip_map} to add hosts success `cat /etc/hosts`"
     fi
   fi
fi
}

main()
{
   updateHost
   updateHostName
}
main

你可能感兴趣的:(shell 脚本 更新或者添加host ,并且增加hostname映射到hosts (修改))