代码:
1 #!/bin/bash
2
3 read -p "Please insert a IP:" IP
4 read -p "Please insert a NETMASK:" NETMASK
5
6 if grep "^BOOTPROTO=dhcp" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null;then
7 sed -i "s/dhcp/static/" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
8 sed -i "/IPADDR=.*/d" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
9 sed -i "/NETMASK=.*/d" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
10 sed -i "/BOOTPROTO/ a/IPADDR=$IP/n/NETMASK=$NETMASK" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
11 else
12 if grep "^BOOTPROTO=bootp" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null;then
13 sed -i "s/bootp/static/" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
14 sed -i "/IPADDR=.*/d" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
15 sed -i "/NETMASK=.*/d" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
16 sed -i "/BOOTPROTO/ a /IPADDR=$IP/n/NETMASK=$NETMASK" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
17 else
18 sed -i "/IPADDR=.*/d" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
19 sed -i "/NETMASK=.*/d" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
20 sed -i "/BOOTPROTO/ a /IPADDR=$IP/n/NETMASK=$NETMASK" /etc/sysconfig/network-scripts/ifcfg-eth0 &> /dev/null
21 fi
22 fi
23
24 cat /etc/sysconfig/network-scripts/ifcfg-eth0
总结:
开始想用sed语句来判断BOOTPROTO后面是否为dhcp或bootp,结果总是出错,总是重复多显示其他内容,最后还是用grep语句来判断。
觉得现在写的语句有点复杂,不知道有没有能一条语句就能判断BOOTPROTO后面是否为dhcp或bootp。
这个shell还不能判断输入的ip地址和子网掩码是否正确,需要改正。(9行处)
将一个字符用命令输入到一个文件的命令:
read -p "Please insert a IP:" IP
echo $IP >/root/iptemp.txt
iptemp.txt和netmasktemp.txt用来接收ip和子网掩码,以后用来判断ip地址是否正确
sed语句的一些命令还不太熟悉,需要多多练习。