博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell脚本实现自动修改IP地址
阅读量:6235 次
发布时间:2019-06-22

本文共 3880 字,大约阅读时间需要 12 分钟。

  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

你可能感兴趣的文章
py10-函数-可变长参数
查看>>
Java并发编程:synchronized
查看>>
广告数据线性回归分析
查看>>
初识hadoop
查看>>
SQL优化技巧--远程连接对象引起的CTE性能问题
查看>>
【转】 利用.dSYM和.app文件准确定位Crash位置
查看>>
python中type dtype astype 的用法
查看>>
centos6.8/6.9 升级openssh的升级openssh-7.5p1.tar.gz
查看>>
使用ngnix做服务器的负载均衡
查看>>
盒子传值
查看>>
使用NSStream来实现Socket
查看>>
iPhone开发之调用系统提示音教程
查看>>
OAuth认证协议原理分析及使用方法
查看>>
二叉树
查看>>
linux 文件搜索命令
查看>>
黄聪:登陆页优化
查看>>
黄聪:Python+NLTK自然语言处理学习(一):环境搭建
查看>>
leetcode110
查看>>
剑指Offer 10 斐波那契数列
查看>>
Ruby之基本数据类型(三)
查看>>