Linux Shell实战之三 自动修改为静态IP

本脚本主要用于修改IP地址为静态!

#!/bin/bash
#
#Target: Auto Chmod IP Information!
#Date: 2015-05-10
#Author: Jacken
#QQ:654001593
#QQ Group:170544180
#Version: 1.0
#Only allow define variable
shopt -s -o nounset
#Define Variable
ETHCONFIG=‘/etc/sysconfig/network-scripts/ifcfg-eth1‘
HOSTS=‘/etc/hosts‘
NETWORK=‘/etc/sysconfig/network‘
BAKDIR="/data/backup/`date +%Y%m%d`"
NETMASK=‘255.255.255.0‘
GATEWAY=‘192.168.1.254‘
DNS1=‘8.8.8.8‘
################################################################################
####################################Define Function#############################
################################################################################
function CHANGE_IP(){
#Create Directory
if [ ! -d $BAKDIR ];then
mkdir -p $BAKDIR
fi
#Prompt Information
#Backup Network File
cp $ETHCONFIG $BAKDIR/`date +%Y%m%d`.${ETHCONFIG:37}$$ && 
echo -e "\e[32mNow Change Ip Address, Backup Interface ${ETHCONFIG:37} to $BAKDIR Done\e[0m"
#Judge Get Ip Mode
if `grep -q  -i  ‘dhcp‘ $ETHCONFIG` ;then
#Change Get Ip Mode
sed -i ‘s/dhcp/static/Ig‘ $ETHCONFIG 
sed -i ‘s/^DNS/#DNS/Ig‘  $ETHCONFIG
echo -e "IPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=$GATEWAY\nDNS1=$DNS1" >> $ETHCONFIG 
        echo -e ‘\e[32mIP Change Success!\e[0m‘
else
#Warning Information
echo -e "\e[31mThe Network alreday is static,Please ensure YES or NO: " 
read i
                #Again Confirm
if [ "$i" == "y" -o "$i" == "yes" -o "$i" == "YES" ];then
#Comment Old Configure 
sed -i -e ‘s/^IPADDR/#IPADDR/g‘ -e ‘s/^NETMASK/#NETMASK/g‘ -e ‘s/^GATEWAY/#GATEWAY/g‘ -e ‘s/^DNS/#DNS/g‘ $ETHCONFIG
echo -e "IPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=$GATEWAY\nDNS1=$DNS1" >> $ETHCONFIG 
echo -e "\e[32mThe Ip Address is $IPADDR ,Change Success!\e[0m"
else
#Exit
echo -e "\e[31mThis $ETHCONFIG static exist, exiting...\e[0m"
fi
fi
}
################################################################################
#Check Ip Address
function CHECK_IP(){
read -p "Please Input Ip address: " IPADDR
#Test IP Format
echo $IPADDR|grep "^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" > /dev/null 2>&1
num=$?
if [ $num -ne 0 ];then
echo -e "\e[31mPlease Check IP Format exiting....\e[0m"
exit 2
else
#Get Part Of Ip 
a=`echo $IPADDR|awk -F. ‘{print $1}‘`
b=`echo $IPADDR|awk -F. ‘{print $2}‘`
c=`echo $IPADDR|awk -F. ‘{print $3}‘`
d=`echo $IPADDR|awk -F. ‘{print $4}‘`
if [ $a -gt 255 ] ||  [ $a -le 0 ];then
echo -e "\e[31mPlease Check IP Format exiting...\e[0m"
exit 2
fi
if [ $b -gt 255 ] || [ $b -lt 0 ];then
echo -e "\e[31mPlease Check IP Format exiting...\e[0m"
exit 2
fi
if [ $c -gt 255 ] || [ $c -lt 0 ];then
echo -e "\e[31mPlease Check IP Format exiting...\e[0m"
exit 2
fi
if [ $d -ge 255 ] || [ $d -le 0 ];then
echo -e "\e[31mPlease Check IP Format exiting...\e[0m"
exit 2
fi
export $IPADDR
fi
}
#Define PS3
PS3="Please Select Your Choose:"
select i in "Change IP And DNS For ${ETHCONFIG:37}" "Show ${ETHCONFIG:37} Config File"  "Restart Device ${ETHCONFIG:37}" "Show ${ETHCONFIG:37} Status"  "Exit" 
do 
CHOOSE=$REPLY
case $CHOOSE in 
1)
CHECK_IP
CHANGE_IP
;;
2)
cat $ETHCONFIG
;;
3)
ifdown ${ETHCONFIG:37} > /dev/null 2>&1 && ifup ${ETHCONFIG:37} > /dev/null 2>&1
if [ $? -eq 0 ];then 
echo -e "\e[32mRestart Device ${ETHCONFIG:37} Success.\e[0m"
else
echo -e "\e[31mRestart Device ${ETHCONFIG:37} Failure.\e[0m"
fi
;;
4)
ifconfig ${ETHCONFIG:37}
;;
5)
echo -e ‘\e[32mByeBye!\e[0m‘
exit
;;
*)
echo -e ‘\e[31mError Number,Please Input Again!‘
esac
done

演示:

时间: 2024-08-07 21:38:10

Linux Shell实战之三 自动修改为静态IP的相关文章

Linux 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修改为静态ip,静态ip修改为其它静态ip

(1) 将动态ip修改为静态ip的思路 ① 修改ip之前,先备份ifcfg-eth0文件 ②  进入网卡配置目录  /etc/sysconfig/network-scripts/ifcfg-eth0 ③  修改BOOTPROTO=static ④  修改ONBOOT=yes ⑤  配置静态ip地址 IPADDR ⑥  配置DNS  NETMASK ⑦  配置网关  GATWAY ⑧  重启网卡验证配置,验证配置结果   service   network  restart (2) 将静态ip修改

CentOS7修改设置静态IP和DNS

当前位置: 主页 > CentOS入门 > 系统配置 > CentOS7修改设置静态IP和DNS 时间:2016-02-22 00:55来源:blog.csdn.net 作者:get_set的专栏 举报 点击:4048次 最近因为学习Puppet,用虚拟机装了个CentOS,使用的NAT的网络模式,为了防止再次启动系统的时候网络IP发生变化,因此设置静态IP和DNS. 由于CentOS是最小化安装,没有ifconfig命令,因此可以采用ip命令查看. 查看IP分配情况: # ip add

【Linux】VMware虚拟机中如何配置静态IP

此处详解如何在VMware虚拟机中配置静态IP. 上图是一个草图,大致说明下VMware网络情况.网段指某个IP范围,例如一栋小区楼和另一栋小区楼就不是一个网段 如果你在A小区,你女朋友在B小区,你想和她联系就需要通过网关.你好基友住你隔壁,你和他通信就不需要通过网关.VMware 给我们模拟了网关,所以我们配置的时候需要根据VMware虚拟机来设置网络ip.我们将windows和Linux配置在一个网段内. 1.查看网关,以及网段 [编辑]-->[虚拟网络编辑器] 我们使用NAT模式,所以选择

Linux学习笔记-虚拟机安装centos7-配置静态IP

目的更方便操作,远程登录主机 tcp/ip通信 目前NAT 分享物理机网络(特殊校园网) dhclient   动态自动获取IP ip add    查看网卡IP 设置静态IP [[email protected] ~]# ip add vi  /etc/sysconfig/network-scripts/ifcfg-ens33 i insert 编辑模式 TYPE=Ethernet BOOTPROTO=dhcp static DEFROUTE=yes PEERDNS=yes PEERROUTE

Linux 如何配置虚拟机下的Centos静态ip

如何配置虚拟机下的Centos静态ip 1.        配置虚拟机的虚拟路由器 2.        配置物理主机的虚拟网卡(VMNET8) 3.        配置虚拟主机Centos的网卡 vi /etc/sysconfig/network-scripts/ifcfg-eth0,添加以下内容: ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.137.128 NETMASK=255.255.255.0 DNS2=8.8.8

CentOS7 修改设置静态IP和DNS

最近因为学习Puppet,用虚拟机装了个CentOS,使用的NAT的网络模式,为了防止再次启动系统的时候网络IP发生变化,因此设置静态IP和DNS. 由于CentOS是最小化安装,没有ifconfig命令,因此可以采用ip命令查看. 查看IP分配情况: # ip addr 发现里边只有一个LOOPBACK的127.0.0.1的回环地址,原来CentOS刚安装后默认是不启动网络连接的. 设置IP和DNS主要在下面的配置文件中修改: # vi /etc/sysconfig/network-scrip

linux shell的输出效果修改方法(界面颜色)

文本终端的颜色可以使用“ANSI非常规字符序列”来生成.举例: echo -e "\033[44;37;5m ME \033[0m COOL" 以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符 “COOL”.“e”是命令 echo 的一个可选项,它用于激活特殊字符的解析器.“\033”引导非常规字符序列.“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 “44;37;5” 和“0”. 修改“44;37;5”可以生

Linux Shell编程之三函数

函数是什么呢?我们为什么有使用函数呢? 一.函数的相关知识 函数就是就具有某种特定功能的代码打包起来,提供一个接口以供使用.这样做的好处是:一方面可以实现代码复用,例如:许多面向对象的语言,像Java提供的许多类和方法(函数)一样:另一方面是为了代码的模块化编程,这样可以实现多人同时开发代码. 在 shell 中函数主要的作用是实现代码复用,当然利用函数比编写代码可以是代码更简洁,易读. shell中如何定义函数? 语法格式: function F_NAME { 函数体 } 或者 F_NAME(