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

 更新时间:2017年07月04日 10:26:28   投稿:lqh  
这篇文章主要介绍了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这个服务的问题。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • linux vps服务器常用服务iptables策略

    linux vps服务器常用服务iptables策略

    linux系统自带防火墙必须要好好利用起来,可是我有一年多没写过防火墙策略了,该忘的都忘了,不该忘的也都忘得差不多了,看笔记,找找感觉
    2017-04-04
  • sersync2完全安装配置说明(一) 基本功能使用

    sersync2完全安装配置说明(一) 基本功能使用

    当前版本的sersync依赖于rsync进行同步。如下图所示,在同步主服务器上开启sersync,将监控路径中的文件同步到目标服务器,因此需要在主服务器配置sersync,在同步目标服务器配置rsync
    2011-11-11
  • 浅谈互斥锁为什么还要和条件变量配合使用

    浅谈互斥锁为什么还要和条件变量配合使用

    下面小编就为大家带来一篇浅谈互斥锁为什么还要和条件变量配合使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Linux crontab定时任务执行失败处理方案

    Linux crontab定时任务执行失败处理方案

    这篇文章主要介绍了Linux crontab定时任务执行失败处理方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 不能在本地计算机启动 apache2.2解决方法

    不能在本地计算机启动 apache2.2解决方法

    这篇文章主要介绍了不能在本地计算机启动 apache2.2解决方法,本文的解决办法只需要修改一个配置参数即可,需要的朋友可以参考下
    2015-07-07
  • Linux上启动和停止jar的方法示例

    Linux上启动和停止jar的方法示例

    在Linux系统中,要想让jar包在后台运行,可以使用nohup命令和&符号,nohup命令可以使进程在后台不受挂起信号影响的执行,而&符号则是将任务放入后台执行,本文介绍了Linux上启动和停止jar的方法示例,需要的朋友可以参考下
    2024-07-07
  • Ubuntu18.04下将 磁盘挂载在某目录下

    Ubuntu18.04下将 磁盘挂载在某目录下

    这篇文章主要介绍了Ubuntu18.04 下将磁盘挂载在某目录下,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • linux 搭建svn服务器的方法步骤

    linux 搭建svn服务器的方法步骤

    这篇文章主要介绍了linux 搭建svn服务器的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • centos6.5配置ssh免秘钥登陆执行pssh命令的讲解

    centos6.5配置ssh免秘钥登陆执行pssh命令的讲解

    今天小编就为大家分享一篇关于centos6.5配置ssh免秘钥登陆执行pssh命令的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Linux进程如何终止

    Linux进程如何终止

    这篇文章主要介绍了Linux进程如何终止问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02

最新评论