Shell脚本实现自动修改IP地址

作为一名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
(0)

相关推荐

  • Shell脚本中获取本机ip地址的3个方法

    方法一: 复制代码 代码如下: /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" or /sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p' 方法二: 复制代码 代码如下: local_host="`hostname --fqdn`" local_i

  • Shell脚本实现IP地址合法性判断

    做unix/linux下的开发,脚本编写的功力是少不了的,作为shell编程,也是博大精深的一个技术领域,这里为了学习,就写一个简单的判断IP地址是否合法的微型脚本程序,这个小程序也是非常有用的. IP地址是32位的,可以由4个十进制数值表示,每个数值的范围都是0~255. 复制代码 代码如下: #!/bin/bash # Test an IP address for validity: # Usage: #      valid_ip IP_ADDRESS #      if [[ $? -e

  • PowerShell脚本实现网卡DHCP自动获取IP地址、设置静态IP地址的方法

    PowerShell设置DHCP自动获取IP地址,PowerShell可以很方便的设置本地计算机启用DHCP来动态获取IP地址,这需要用到WMI扩展.本文介绍详细的脚本程序. PowerShell设置DHCP自动获取IP地址 PowerShell可以很方便的设置本地计算机启用DHCP来动态获取IP地址,这需要用到WMI扩展.本文介绍详细的脚本程序. 第一步,使用Get-WmiObject来获取到指定的网卡配置对象 复制代码 代码如下: $netAdp = gwmi win32_networkad

  • Shell脚本实现自动修改IP地址

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名在维护和管理方面也比较方便.如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三! #!/bin/sh #auto Change ip netmask gateway scripts #wugk 2012-12-17 cat << EOF ++++++++自动修改ip和主机名

  • Shell脚本判断IP地址是否合法的方法

    使用shell校验IP地址合法性 使用方法: 复制代码 代码如下: [root@yang python]# bash check_ip.sh IP地址 执行结果:返回值0校验合法,非0不合法.shell代码: 复制代码 代码如下: [root@yang python]# vi check_ip.sh #!/usr/bin/shCheckIPAddr(){echo $1|grep "^[0-9]\{1,3\}\.\([0-9]\{1,3\}\.\)\{2\}[0-9]\{1,3\}$"

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

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名在维护和管理方面也比较方便.如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三! 复制代码 代码如下: #!/bin/sh  #auto Change ip netmask gateway scripts  #wugk 2012-12-17  cat <<EOF +++++

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

    本例中以CentOS 7举例说明如何设置Linux开机自动获取IP地址和设置固定IP地址. 自动获取动态IP地址 1.输入"ip addr"并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令),记录下网卡名称(本例中为ens33,下图黄色框内). 2.输入"cd /etc/sysconfig/network-scripts/"按回车键确定,继续输入"ls"按回车键查看文件. 3.输入"vi ifcfg-ens

  • dos环境下修改ip地址

    netsh interface ip dump >c:\pc1.txt 该命令是显示当然"本地连接" 的接口IP 配置,并保存在pc1.txt文本文件中 我查看一下c:\pc1.txt这个文件 显示的是当前"本地连接"的接口的IP配置,我们用命令ipconfig/all看看当前接口的配置是否和pc1.txt这个文件一样 可以看到两者是一样的.我们打开PC1.TXT这个文件,把"set address name = "本地连接" s

  • 使用shell脚本实现ping对应IP所对应的人名(推荐)

    #!/bin/bash a=(张三 李四 王五 赵六) for i in {0..3} do if ping -c 1 192.168.1. $((${i}+1)) >dev/null 2>&1;then echo $((${i}+1))"号"${a[${i}]}"在线" else echo $((${i}+1))"号"${a[${i}]}"离线" fi done 这串shell代码实现了ping 某个IP

  • Linux虚拟机修改ip地址,查看网关,网络环境配置的教程

    修改虚拟机的ip地址: 进入如下界面,直接修改子网ip即可. 查看网关: Linux网络环境配置: 第一种方式(自动获取): 说明:登陆后,通过界面来设置自动获取ip 我们先进入设置: 把自动连接勾上然后点应用.之后每次启动系统的时候就可以自动连接网络了. 特点:Linux启动后会自动获取ip,缺点是每次自动获取的ip地址可能不一样,这种方法不适用于做服务器,因为我们服务器的ip需要实时固定. 第二种方法:(指定固顶的ip) 说明: 直接修改配置文件来指定ip,并可以链接到外网(程序员推荐),编

  • IMAIL系统修改IP地址的处理方法

    一.概述: 1.如果改变了本机的IP地址,则必须对IMail的原设置作相应的变更. 2.本文主要通过修改注册表来实现. 3.例如,本机原来的IP地址为"192.168.0.10",在IMail中的其对应的邮件主机名为"mail.aaa.net",别名为"aaa.net",现在本机的IP地址改成了"192.168.0.1". 二.具体操作: 1.打开注册表编辑器.选"开始→运行:regedit". 2.找到I

  • 解决Centos7下crontab+shell脚本定期自动删除文件问题

    问题描述: 最近有个需求,就是rsync每次同步的数据量很多,但是需要保留的数据库bak文件 保留7天就够了,所以需要自动清理文件夹内的bak文件 解决方案: 利用shell脚本来定期删除文件夹内的任务 1.创建shell文件 [root@zabbix script]# vim backup_sql_clean.sh #!/bin/sh find /data1/backup/KDKDA\$AGKDPAYKT/XNAKSD/FXUIJ -mtime +10 -name "*.bak" -

  • Python设置在shell脚本中自动补全功能的方法

    本篇博客将会简短的介绍,如何在ubuntu中设置python自动补全功能. 需求:由于python中的内建函数较多,我们在百纳乘时,可能记不清函数的名字,同时自动补全功能,加快了我们开发的效率. 方法以及要求:设置过程中需要看客具备一点ubuntu的基本知识,当然不懂也没有关系,跟着一步一步走,不懂得可以学习一下ubuntu的文件系统. 具体步骤 1.首先创建一个文件:~/.pythonrc 在ubuntu中创建文件的命令为: sudo gedit ~/.pythonrc #sudo表示使用管理

随机推荐