作为一名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脚本实现自动修改IP地址的更多相关文章

  1. Linux Shell脚本之自动修改IP

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  2. shell脚本查找tcp过多ip地址封掉

    #!/bin/bash #hc source /etc/profile iplist=`netstat -ntu | awk '{print $5}'| cut -d':' -f1| sort |un ...

  3. CentOS 通过shell脚本过滤得到服务器IP地址

    1.CentOS 6.x (32Bit &&64Bit) [root@localhost ~]# ifconfig |grep Bcast |awk '{print$2}' |sed ...

  4. 自动填充IP地址

    在windows下的DOS窗口中 要利用Netsh命令,进入到DOS下的网络配置状态,就能实现各种网络配置. 进入IP设置模式 在DOS环境中,设置网络参数之前,必须先进入IP设置模式才可以.先打开系 ...

  5. Windows下通过脚本快速修改IP地址

    Windows下通过脚本快速修改IP地址 如果通过Windows的网络属性修改Ip/网关,真是太麻烦了. 经常要切换ip,所以我写了两个脚本: c:\办公室.bat netsh interface i ...

  6. 如何用脚本快速修改IP地址(Netsh)

    如何用脚本快速修改IP地址(Netsh) 如果通过Windows的网络属性修改Ip/网关,真是太麻烦了.最近一个项目经常要切换ip,所以我写了两个脚本:c:\116.bat netsh interfa ...

  7. macOS 自动修改mac地址脚本

    介于 某公众号提供了通过修改mac地址来链接BUPT_mobile 的推送,上网上查了一下咋写脚本,实现一键修改mac地址的功能 网上有自动修改mac地址的程序,但是很坑爹的要收费,所以不如自力更生写 ...

  8. 详解如何设置CentOS 7开机自动获取IP地址

    本例中以CentOS 7举例说明如何设置Linux开机自动获取IP地址和设置固定IP地址. 自动获取动态IP地址 1.输入“ip addr”并按回车键确定,发现无法获取IP(CentOS 7默认没有i ...

  9. 修改ip 在linux上永久修改IP地址 子网掩码

    小结: 1. 子网掩码.子网IP计算 2. linux centos 修改ip地址细节介绍_LINUX_操作系统_脚本之家 http://www.jb51.net/LINUXjishu/66509.h ...

随机推荐

  1. 在线编辑Word——插入图表

    在Word中可插入图表,配合使用表格能够更加全方位的展示数据的可信度并增加数据的可读性.本文将通过使用在线编辑器 Spire.Cloud Word 演示如何来插入图表,并设置相关格式化操作.具体步骤如 ...

  2. Invalid prop: type check failed for prop "xxx". Expected Number, got String.

    在子组件progress-circle.vue的template中的定义如下: <svg :width="radius" :height="radius" ...

  3. PAT甲级1074 Reversing Linked List (25分)

    [程序思路] 先根据地址按顺序读入节点,入栈,当栈里的元素个数等于k时全部出栈,并按出栈顺序保存,最后若栈不为空,则全部出栈并按出栈的稀饭顺序保存,最后输出各节点 注意:输入的节点中有可能存在无用节点 ...

  4. redis异常:(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk.

    (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d ...

  5. 解决SpringBoot项目部署到服务器后访问Tomcat后404,无法访问Controller

  6. GoLang设计模式14 - 状态模式

    状态模式,顾名思义,是一种基于有限状态机制的设计模式.在这种设计模式中,行为是由相应的状态来决定的.接下来我们会用一个售卖机的例子来说明下状态模式.为了便于说明,我们把场景简化一下,假设有一台售卖机只 ...

  7. 基于Netty实现自定义消息通信协议(协议设计及解析应用实战)

    所谓的协议,是由语法.语义.时序这三个要素组成的一种规范,通信双方按照该协议规范来实现网络数据传输,这样通信双方才能实现数据正常通信和解析. 由于不同的中间件在功能方面有一定差异,所以其实应该是没有一 ...

  8. 菜鸡的Java笔记 第十七 static 关键字

    static 是java中定义的一个关键字,主要是描述全局的概念,所以利用static关键字可以定义属性,定义方法        但是在90%的情况下,我们的开发代码很少会去直接编写static*// ...

  9. C代码

    #include<stdio.h>#include<stdlib.h>void main(){    char    ch, file_name1[20], file_name ...

  10. [hdu6991]Increasing Subsequence

    令$f_{i}$​​表示以$i$​​为结尾的极长上升子序列个数,则有$f_{i}=\sum_{j<i,a_{j}<a_{i},\forall j<k<i,a_{k}\not\i ...