Linux下IP设置脚本的实例及遇到问题解决办法

吾爱主题 阅读:184 2024-04-05 13:51:21 评论:0

Linux下IP设置脚本的实例及遇到问题解决办法

背景

     一个Java web项目有一个功能是IP修改,Linux的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 #!/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验证网卡重启成功。

问题二

?
1 2 3 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]

问题三

?
1 See ‘systemctlstatus network.service‘ and ‘journalctl-xn‘ for details

这个问题,执行journalctl–xe> /home/journalctl.log

查看日志文件中,找到真正的错误是它:

?
1 Bringing up interface enp4s0f0: RTNETLINK answers: File exists

 问题四

?
1 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

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容