当前位置: 首页 > news >正文

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

为什么80%的码农都做不了架构师?>>>   hot3.png

这篇文章主要介绍了Shell脚本实现自动修改IP地址,本文直接给出实现代码,并在代码中标注大量注释,需要的朋友可以参考下

作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面也比较方便。如下脚本用途为:修改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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/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函数
functionChange_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
  
 [ $? -eq0 ];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":
 readi
  
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##############
functionChange_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 |grep127.0.0.1 |grep"$host"
   
if
 [ $? -ne0 ];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函数
functionChange_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
 [ $? -ne0 ];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
 selectiin"Change_ip""Change_hosts""Change_network"
  
do
#case 方式,一般用于多种条件下的判断
case$iin
  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

转载于:https://my.oschina.net/fyzhu/blog/604249

相关文章:

  • 参数的排列组合
  • 在当今快节奏的软件更迭当中,我们是否还需要进行系统的学习?
  • JSTL截取字符串
  • Java开发相关配置
  • Java BIO、NIO、AIO-------转载
  • JSPatch
  • RSA加密的测试demo
  • 用 Python 开发自动化测试脚本
  • 运用.net core配合VS 2015制作nuget包
  • linux shell数据重定向(输入重定向与输出重定向)详细分析 上(转)
  • PHP开发学习门户改版效果图投票
  • 收到云栖社区发的淘公仔礼物
  • d语言之模块化
  • 7.12 Models -- Frequently Asked Questions
  • Mysql错误问题记录
  • Android优雅地处理按钮重复点击
  • canvas 五子棋游戏
  • CSS 提示工具(Tooltip)
  • ES6--对象的扩展
  • HTTP请求重发
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript DOM 10 - 滚动
  • Mybatis初体验
  • nodejs调试方法
  • React-Native - 收藏集 - 掘金
  • Redis的resp协议
  • Vue.js 移动端适配之 vw 解决方案
  • Xmanager 远程桌面 CentOS 7
  • 从伪并行的 Python 多线程说起
  • 回顾 Swift 多平台移植进度 #2
  • 记一次和乔布斯合作最难忘的经历
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端性能优化--懒加载和预加载
  • 如何合理的规划jvm性能调优
  • 事件委托的小应用
  • 微信小程序--------语音识别(前端自己也能玩)
  • 以太坊客户端Geth命令参数详解
  • 与 ConTeXt MkIV 官方文档的接驳
  • 在Docker Swarm上部署Apache Storm:第1部分
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #vue3 实现前端下载excel文件模板功能
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (2)Java 简介
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)ssm码农论坛 毕业设计 231126
  • (十六)一篇文章学会Java的常用API
  • (学习日记)2024.01.19
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 未来三学期想要修的课 (日記)