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