侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Shell脚本实现自动修改IP、主机名等功能分享

技术  /  管理员 发布于 7年前   323

作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面也比较方便。如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三!

复制代码 代码如下:
#!/bin/sh 
#auto Change ip netmask gateway scripts 
#wugk 2012-12-17 
cat <<EOF
++++++++自动修改ip和主机名等相关信息+++++++++
ETHCONF=/etc/sysconfig/network-scripts/ifcfg-eth0 
HOSTS=/etc/hosts 
NETWORK=/etc/sysconfig/network 
DIR=/data/backup/`date +%Y%m%d` 
NETMASK=255.255.255.0 
+++++++++-------------------------+++++++++++
EOF 
#Define Path  定义变量,可以根据实际情况修改
ETHCONF=/etc/sysconfig/network-scripts/ifcfg-eth0 
HOSTS=/etc/hosts 
NETWORK=/etc/sysconfig/network 
DIR=/data/backup/`date +%Y%m%d` 
NETMASK=255.255.255.0 
echo "================================================"   
echo 
#定义change_ip函数
function Change_ip () 
{  
#判断备份目录是否存在,中括号前后都有空格,!叹号在shell表示相反的意思# 
if 
   [ ! -d $DIR ];then 
   mkdir -p $DIR 
fi 
  echo "Now Change ip address ,Doing Backup Interface eth0" 
  cp $ETHCONF $DIR 
  grep "dhcp"  $ETHCONF 
#如下$?用来判断上一次操作的状态,为0,表示上一次操作状态正确或者成功#   
if 
  [ $? -eq 0 ];then 
#read -p 交互输入变量IPADDR,注冒号后有空格,sed -i 修改配置文件#
  read -p "Please insert ip Address:" IPADDR 
  sed -i 's/dhcp/static/g' $ETHCONF 
#awk -F. 意思是以.号为分隔域,打印前三列#
  echo -e "IPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=`echo $IPADDR|awk -F. '{print $1"."$2"."$3}'`.254" >>$ETHCONF 
  echo "This IP address Change success !" 
else 
  echo -n  "This $ETHCONF is static exist ,please ensure Change Yes or NO": 
  read i 
fi 
if   
  [ "$i" == "y" -o "$i" == "yes" ];then 
  read -p "Please insert ip Address:" IPADDR 
count=(`echo $IPADDR|awk -F. '{print $1,$2,$3,$4}'`)  
 #定义数组, ${#count[@]}代表获取变量值总个数#
A=${#count[@]} 
 #while条件语句判断,个数是否正确,不正确循环提示输入,也可以用[0-9]来判断ip#
while  
  [ "$A" -ne "4" ] 
do 
  read -p "Please re Inster ip Address,example 192.168.0.11 ip": IPADDR 
count=(`echo $IPADDR|awk -F. '{print $1,$2,$3,$4}'`)  
A=${#count[@]} 
done 
 #sed -e 可以连续修改多个参数#
  sed -i -e 's/^IPADDR/#IPADDR/g' -e 's/^NETMASK/#NETMASK/g' -e 's/^GATEWAY/#GATEWAY/g' $ETHCONF
 #echo -e \n为连续追加内容,并自动换行#
  echo -e "IPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=`echo $IPADDR|awk -F. '{print $1"."$2"."$3}'`.254" >>$ETHCONF 
  echo "This IP address Change success !" 
else 
  echo "This $ETHCONF static exist,please exit" 
  exit $? 
fi 

} 

#定义hosts函数 
############function hosts############## 
function Change_hosts () 
{ 
if 
   [ ! -d $DIR ];then 
   mkdir -p $DIR 
fi 
  cp $HOSTS $DIR 
  read -p "Please insert ip address": IPADDR 
host=`echo $IPADDR|sed 's/\./-/g'` 
  cat $HOSTS |grep 127.0.0.1 |grep "$host" 
if 
  [ $? -ne 0 ];then 
  sed -i "s/127.0.0.1/127.0.0.1 $host/g" $HOSTS 
  echo "This hosts change success " 
else 
  echo "This $host IS Exist .........." 
fi 
}
###########fuction network############### 
#定义network函数 
function Change_network ()  
{ 
   if 
   [ ! -d $DIR ];then 
   mkdir -p $DIR 
 fi 
  cp $NETWORK $DIR 
  read -p "Please insert ip address": IPADDR 
host=`echo $IPADDR|sed 's/\./-/g'` 
  grep "$host" $NETWORK 
   if 
  [ $? -ne 0 ];then 
  sed -i "s/^HOSTNAME/#HOSTNAME/g" $NETWORK 
  echo "NETWORK=$host" >>$NETWORK 
else 
  echo "This $host IS Exist .........." 
  fi 
} 

#PS3一般为菜单提示信息# 
PS3="Please Select ip or hosts Menu": 
#select为菜单选择命令,格式为select $var in ..command.. do .... done   
  select i in  "Change_ip" "Change_hosts" "Change_network" 

do 
#case 方式,一般用于多种条件下的判断 
case $i in  
     Change_ip ) 
     Change_ip 
;; 
     Change_hosts ) 
     Change_hosts 
;; 
     Change_network ) 
     Change_network  
;; 
     *) 
     echo 
     echo "Please Insert $0: Change_ip(1)|Change_hosts(2)|Change_network(3)" 
     echo 
;; 
esac 

done 


  • 上一条:
    Shell脚本实现删除一年前文件功能分享
    下一条:
    Shell脚本调快调慢系统时间(测试服务器时使用)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 国外服务器实现api.openai.com反代nginx配置(0个评论)
    • 2024/4/28最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客