查看当前路径
[root@ansible_nfs network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@ansible_nfs network-scripts]# cat ifcfg-ens33
TYPE="Ethernet" #网络类型是以太网
BOOTPROTO="static" #表示我们是静态设置IP地址,none表示静态,static静态,dhcp表示动态获得ip
DEFROUTE="yes" #这个配置里的网关作为默认路由
NAME="ens33" #网卡的名字
DEVICE="ens33" #网卡的设备
ONBOOT="yes" #启用网卡
IPADDR=192.168.102.138 #指定ip地址
PREFIX=24 #指定子网掩码
GATEWAY=192.168.102.2 #指定默认网关,默认路由
DNS1=114.114.114.114 #指定dns
编写脚本实现手工配置ip地址
[root@ansible_nfs 7-3]# cat modify_ip_2.sh
#!/bin/bash
#接收第1个位置变量的值赋值给new_ip
new_ip=$1
#检测ip地址是否合法
if echo $1|egrep "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}$" &>/dev/null;then
echo "ip地址合法"
ping -w 1 $new_ip &>/dev/null
if (( $? == 0 ));then
echo "ip已使用,请重新输入"
else
echo "ip未使用"
#备份配置文件到/backup_network
mkdir /backup_network -p
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /backup_network
#修改ip地址为第1个位置变量的内容
sed -i "/IPADDR/c IPADDR=$new_ip" /etc/sysconfig/network-scripts/ifcfg-ens33
#重启网络服务
service network restart
#获取ip地址的ens33赋值给sc_ip
sc_ip=$(ip a|awk '/inet.*ens33$/{print $2}')
#通过sc_ip的长度来判断有没有ip
if (( ${#sc_ip} > 1 )) ;then
echo "modify ip successful"
else
#回滚到原来的配置文件
cp /backup_network/ifcfg-ens33 /etc/sysconfig/network-scripts/
#重启网络服务
service network restart
fi
fi
else
echo "ip地址不合法,请重新输入"
fi
执行脚本
[root@ansible_nfs 7-3]# bash modify_ip_2.sh 500.168.102.138
ip地址不合法,请重新输入
[root@ansible_nfs 7-3]# bash modify_ip_2.sh 192.168.102.138
ip地址合法
ip已使用,请重新输入
[root@ansible_nfs 7-3]# bash modify_ip_2.sh 192.168.102.136
ip地址合法
ip未使用
Restarting network (via systemctl): [ 确定 ]
modify ip successful