Linux下IP設(shè)置腳本的實(shí)例及遇到問(wèn)題解決辦法
Linux下IP設(shè)置腳本的實(shí)例及遇到問(wèn)題解決辦法
背景
一個(gè)Java web項(xiàng)目有一個(gè)功能是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
實(shí)際在這個(gè)shell腳本執(zhí)行過(guò)程中,碰到幾個(gè)問(wèn)題,是目標(biāo)服務(wù)器的網(wǎng)絡(luò)服務(wù)相關(guān)的配置問(wèn)題。有四種不同的錯(cuò)誤,整理如下,以備后用。腳本的本質(zhì)就是將目的IP信息寫入到網(wǎng)卡文件ifcfg-eth2文件中。(eth2是測(cè)試機(jī)器上的通訊網(wǎng)卡名稱),作為參數(shù)需要傳遞給腳本的。
問(wèn)題一
在虛擬機(jī)上測(cè)試,執(zhí)行這個(gè)腳本過(guò)程中遇到的問(wèn)題。本地安裝的是VirtualBox,復(fù)制了5個(gè)虛擬機(jī)的節(jié)點(diǎn)。基于這個(gè)背景,那么在執(zhí)行腳本完成后,重啟網(wǎng)卡服務(wù)service network restart命令,總是遭遇失敗,失敗信息提示:
Error:No suitable device found: no device found for connection "System eth0"
這是因?yàn)樘摂M機(jī)在復(fù)制過(guò)程中復(fù)制了網(wǎng)卡,但實(shí)際上ifconfig-a只顯示一個(gè)網(wǎng)卡。解決辦法:
第一步,執(zhí)行ifconfig –a 查看當(dāng)前系統(tǒng)的網(wǎng)卡名稱,我的當(dāng)前虛擬機(jī)節(jié)點(diǎn)是eth2,lo.
第二步,保留/etc/sysconfig/network-scripts中ifcfg-eth2,ifcfg-lo,其他不存在的網(wǎng)卡文件需要?jiǎng)h除。復(fù)制過(guò)來(lái)的是eth0,rm –rf ifcfg-eth0文件。
第三步,ifcfg-eth2文件內(nèi)容,保證DEVICE=eth2參數(shù)名稱跟文件名稱一致。
第四步,修改網(wǎng)卡策略文件vi /etc/udev/rules.d/70-persistent-net.rules找到eth2網(wǎng)卡的配置,修正MAC地址和eth2的MAC地址一致。
第五步,驗(yàn)證:執(zhí)行service network restart驗(yàn)證網(wǎng)卡重啟成功。
問(wèn)題二
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]
問(wèn)題三
See ‘systemctlstatus network.service‘ and ‘journalctl-xn‘ for details
這個(gè)問(wèn)題,執(zhí)行journalctl–xe> /home/journalctl.log
查看日志文件中,找到真正的錯(cuò)誤是它:
Bringing up interface enp4s0f0: RTNETLINK answers: File exists
問(wèn)題四
Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization.
centos下出現(xiàn)該故障的二、三、四三種問(wèn)題的根源一樣,就是啟動(dòng)網(wǎng)絡(luò)的兩個(gè)服務(wù)有沖突:/etc/init.d/network和/etc/init.d/NetworkManager這兩個(gè)服務(wù)有沖突。
解決辦法:關(guān)掉NetworkManager服務(wù),通過(guò)命令service NetworkManager stop完成。再執(zhí)行service network restart驗(yàn)證能夠正常重啟網(wǎng)卡服務(wù)。
結(jié)論
驗(yàn)證IP設(shè)置腳本,提供兩個(gè)參數(shù)一個(gè)是IP信息和網(wǎng)卡名稱執(zhí)行如下命令:
sh reset_ip.sh 192.168.10.170:255.255.255.0:192.168.10.1:10.0.1.90 eth2可以修改虛擬機(jī)IP地址。一個(gè)簡(jiǎn)單的IP設(shè)置腳本,執(zhí)行過(guò)程中幾乎把網(wǎng)上跟網(wǎng)卡相關(guān)的問(wèn)題,都遭遇了。各種嘗試終于找到原因了,主要根源就是NetworkManage這個(gè)服務(wù)的問(wèn)題。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
linux vps服務(wù)器常用服務(wù)iptables策略
linux系統(tǒng)自帶防火墻必須要好好利用起來(lái),可是我有一年多沒(méi)寫過(guò)防火墻策略了,該忘的都忘了,不該忘的也都忘得差不多了,看筆記,找找感覺(jué)2017-04-04sersync2完全安裝配置說(shuō)明(一) 基本功能使用
當(dāng)前版本的sersync依賴于rsync進(jìn)行同步。如下圖所示,在同步主服務(wù)器上開啟sersync,將監(jiān)控路徑中的文件同步到目標(biāo)服務(wù)器,因此需要在主服務(wù)器配置sersync,在同步目標(biāo)服務(wù)器配置rsync2011-11-11Linux crontab定時(shí)任務(wù)執(zhí)行失敗處理方案
這篇文章主要介紹了Linux crontab定時(shí)任務(wù)執(zhí)行失敗處理方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06不能在本地計(jì)算機(jī)啟動(dòng) apache2.2解決方法
這篇文章主要介紹了不能在本地計(jì)算機(jī)啟動(dòng) apache2.2解決方法,本文的解決辦法只需要修改一個(gè)配置參數(shù)即可,需要的朋友可以參考下2015-07-07centos6.5配置ssh免秘鑰登陸執(zhí)行pssh命令的講解
今天小編就為大家分享一篇關(guān)于centos6.5配置ssh免秘鑰登陸執(zhí)行pssh命令的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02