Linux Shell十三 自动修改为静态IP

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/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  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

演示:

wKioL1VPXILiKMC1AAZNrPsODLI760.jpg



本文转自Jacken_yang 51CTO博客,原文链接:http://blog.51cto.com/linuxnote/1650076,如需转载请自行联系原作者
相关文章
|
3月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
|
3月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
3月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
|
5月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
569 0
|
7月前
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
365 24
|
7月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
200 4
|
7月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
406 3
|
8月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
639 25
|
8月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
609 28
|
8月前
|
Linux Shell
shell_42:Linux参数移动
总的来说,参数移动是Linux shell脚本中的一个重要概念,掌握它可以帮助我们更好地处理和管理脚本中的参数。希望这个解释能帮助你理解和使用参数移动。
172 18