Linux下IP设置脚本的实例及遇到问题解决办法
Linux下IP设置脚本的实例及遇到问题解决办法
背景
一个Java web项目有一个功能是IP修改,Linux的IP修改脚本如下:
#!/bin/bash #useing parameter ip:netmask:gateway:dns1 #system version:centos6,7/redhat6,7 #read parameter ipaddr=`echo $1|cut -d ":" -f 1` netmask=`echo $1|cut -d ":" -f 2` gateway=`echo $1|cut -d ":" -f 3` dns1=`echo $1|cut -d ":" -f 4` dns2=`echo $1|cut -d ":" -f 5` targetDevice=$2 #get device(active) name -- centos6 and centos7 DEVICE=`dmesg|grep Link|grep Up|cut -d ":" -f 3,4|cut -d " " -f 2|cut -d ":" -f 1|uniq|head -n 1` #if parameter has device name,use it ,else use first alive device if [ "$targetDevice" != "" ]; then DEVICE=$targetDevice echo 'device use target device :' $DEVICE fi #backup net_file mv /etc/sysconfig/network-scripts/'ifcfg-'$DEVICE /etc/sysconfig/network-scripts/'ifcfg-'$DEVICE'.bak' -f #config(net_file) cat <<end>> /etc/sysconfig/network-scripts/'ifcfg-'$DEVICE DEVICE=$DEVICE ONBOOT=yes TYPE=Ethernet BOOTPROTO=none IPV6INIT=no DEFROUTE=yes IPADDR=$ipaddr GATEWAY=$gateway NETMASK=$netmask DNS1=$dns1 DNS2=$dns2 end #update /etc/hosts cat /sensor/bin/standardhosts>/etc/hosts echo '127.0.0.1 '$(hostname)>>/etc/hosts #grant the net_file chmod 755 /etc/sysconfig/network-scripts/'ifcfg-'$DEVICE #restart network /etc/init.d/network restart
实际在这个shell脚本执行过程中,碰到几个问题,是目标服务器的网络服务相关的配置问题。有四种不同的错误,整理如下,以备后用。脚本的本质就是将目的IP信息写入到网卡文件ifcfg-eth2文件中。(eth2是测试机器上的通讯网卡名称),作为参数需要传递给脚本的。
问题一
在虚拟机上测试,执行这个脚本过程中遇到的问题。本地安装的是VirtualBox,复制了5个虚拟机的节点。基于这个背景,那么在执行脚本完成后,重启网卡服务service network restart命令,总是遭遇失败,失败信息提示:
Error:No suitable device found: no device found for connection "System eth0"
这是因为虚拟机在复制过程中复制了网卡,但实际上ifconfig-a只显示一个网卡。解决办法:
第一步,执行ifconfig –a 查看当前系统的网卡名称,我的当前虚拟机节点是eth2,lo.
第二步,保留/etc/sysconfig/network-scripts中ifcfg-eth2,ifcfg-lo,其他不存在的网卡文件需要删除。复制过来的是eth0,rm –rf ifcfg-eth0文件。
第三步,ifcfg-eth2文件内容,保证DEVICE=eth2参数名称跟文件名称一致。
第四步,修改网卡策略文件vi /etc/udev/rules.d/70-persistent-net.rules找到eth2网卡的配置,修正MAC地址和eth2的MAC地址一致。
第五步,验证:执行service network restart验证网卡重启成功。
问题二
nm_object_array_demarshal: couldn't create object for /org/freedesktop/NetworkManager/ActiveConnection/39 Error: Obtaining active connection for'/org/freedesktop/NetworkManager/ActiveConnection/39' failed. [FAILED]
问题三
See ‘systemctlstatus network.service‘ and ‘journalctl-xn‘ for details
这个问题,执行journalctl–xe> /home/journalctl.log
查看日志文件中,找到真正的错误是它:
Bringing up interface enp4s0f0: RTNETLINK answers: File exists
问题四
Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization.
centos下出现该故障的二、三、四三种问题的根源一样,就是启动网络的两个服务有冲突:/etc/init.d/network和/etc/init.d/NetworkManager这两个服务有冲突。
解决办法:关掉NetworkManager服务,通过命令service NetworkManager stop完成。再执行service network restart验证能够正常重启网卡服务。
结论
验证IP设置脚本,提供两个参数一个是IP信息和网卡名称执行如下命令:
sh reset_ip.sh 192.168.10.170:255.255.255.0:192.168.10.1:10.0.1.90 eth2可以修改虚拟机IP地址。一个简单的IP设置脚本,执行过程中几乎把网上跟网卡相关的问题,都遭遇了。各种尝试终于找到原因了,主要根源就是NetworkManage这个服务的问题。
原文链接:http://blog.csdn.net/wojiushiwo945you/article/details/72724583
(资源库 www.zyku.net)
您可能感兴趣的文章
- 05-19javascript实现获取中文汉字拼音首字母
- 05-10javascript实现单张或多张图片持续无缝滚动
- 05-10php判断数组是否为空的实例方法
- 05-10java中构造器内部调用构造器实例详解
- 05-06无公网IP通过ZeroTier方便实现内网穿透(详细)
- 05-05实例讲解Nginx下的rewrite规则
- 11-04配置错误定义了重复的“system.web.extensions/script
- 04-22Nginx反向代理后获取不到客户端的真实ip地址的解决方
- 11-23简单查看docker name和ip
- 11-23docker 容器(container)获取ip地址的方法
- 12-28樱花视频编辑-樱花视频编辑应用软件功
- 09-12Vultr VPS忘记root密码解决方法
- 04-04XShell与虚拟机连接的IP问题
- 10-14苹果13电池健康在哪看
- 03-31简单实现一个手持弹幕功能+文字抖动特
- 03-04wordpress加速优化之精简头部代码
- 12-30无缝拼图-无缝拼图应用软件功能介绍
- 09-23联想小新锁屏密码设置教程分享
- 09-15微信如何开启音视频邀请通知
- 02-23DedeCMS会员中心发布图集上传缩略图为

最近更新
阅读排行
猜你喜欢
- 11-23opporeno6pro关闭指纹解锁震动教程分
- 09-14小米平板5pro启用杜比全景声教程分享
- 02-17帝国CMS-识别帝国CMS版本插件下载
- 07-26短信验证码的时效性是怎样实现的
- 12-29氚云办公-氚云办公应用软件功能介绍
- 04-24Python 字符串中的字符倒转
- 08-09织梦dedecms百度快照劫持注入代码防范
- 02-22DedeCMS调用指定文章内容的两种实现方
- 10-28qq音乐车载模式如何显示歌词
- 12-01必剪添加视频标签方法介绍