linux脚本怎么把文件地址变成动态地址,Linux脚本程序自动修改网卡配置文件中的MAC地址...
在玩Linux虛擬機的時候,一個安裝好linux系統的virtual HDD會用于創建多個虛擬機,這樣就不需要在創建每個虛擬機都安裝一遍系統了。virtual HDD加載到虛擬機后,新的虛擬機的MAC地址就會和virtual系統中ifcfg-eth[0-9]中的MAC地址不一樣,進入系統后,ifconfig -a看到的網卡編號是接著原來系統中網卡序號編號的。假如原來系統中有四塊網卡,那么對應的編號是:eth0,eth1,eth2,eth3;那么你用virtual HDD來創建一個新虛擬機,新的虛擬機同樣配置了四塊網卡,那么在進入系統后,用ifconfig -a 應該看到以下這樣的網卡編號:eth4,eth5,eth6,eth7。
我經常會遇到這樣的問題,每次修復這類問題,都要花上很長時間,實在糾結。我不得不考慮自動化的問題。于是下面的這個腳本程序就誕生了。
這個腳本程序主要修改以下兩個文件:
ifcfg-eth[0-9]:[0-9]是泛指,這是正則表達式的表示方法,別說看不懂。這些網卡配置文件中的MAC地址全部要修改為當前機器上網卡的MAC。
70-persistent-net.rules:決定網卡的編號。這個文件中的內容,是系統啟動時檢測到的網卡,是系統自動生成;這個文件可以直接清空,我這里為了練手,所以我也對其做了細化處理。
執行完這個腳本后,重啟系統,就一切OK了。就看到了熟悉的eth0,eth1……之類的了。
此腳本程序適應于RHEL系列,CentOS。
#!/bin/bash
#update:2012-12-16
#author:Sean_Gong
#version
#根據系統所識別到的網卡個數,決定修改ifcfg-eth$x文件,在修改這個網卡配置文件之前首先確定這個文件是否存在。
#如果存在,則把系統識別到的所有網卡的MAC地址寫入該文件作為注釋,便于記錄和檢查。
#在處理70-persistent-net.rules時,可以簡單的把該文件清空。
#系統重啟后,會自己把識別到的網卡添加到這個文件中,不需要人工干預。
#這里我之所以處理這個文件,是為了練習sed對文本的處理,和程序邏輯的鍛煉,對程序整體的掌控能力。
cdate=$(date '+%Y%m%d') ? num=$(ifconfig -a | grep eth | wc -l) ? ? ? for ((n=0;n ifcfg-eth${n}_temp ? ? ? ? ? ? ifconfig -a | grep "HWaddr" | awk '{print "#"$1" : "$5}' >> ifcfg-eth${n}_temp ? ? ? ? ? ? newmac=$(ifconfig -a | grep "eth" | sort | awk '{print $5}' | nl -n ln | grep "^${j}" | awk '{print $2}') ? ? ? ? ? ? sed "s/HWADDR.*$/HWADDR=$newmac/g" ifcfg-eth${n}_temp > ifcfg-eth${n}_vi ? ? ? ? ? ? cp -fa ifcfg-eth${n}_vi /etc/sysconfig/network-scripts/ifcfg-eth${n} && rm -f ifcfg-eth${n}_temp ? ? ? ? ? ? grep -i ${newmac} 70-persistent-net.rules_${cdate} | sed "s/NAME=.*$/NAME=\"eth${n}\"/g" >> 70-persistent-net.rules_temp ? ? ? ? else ? ? ? ? ? ? newmac=$(ifconfig -a | grep "eth" | sort | awk '{print $5}' | nl -n ln | grep "^${j}" | awk '{print $2}') ? ? ? ? ? ? grep -i ${newmac} 70-persistent-net.rules_${cdate} | sed "s/NAME=.*$/NAME=\"eth${n}\"/g" >> 70-persistent-net.rules_temp ? ? ? ? ? ? continue ? ? ? ? fi ? ? ? done ? ? ? cat 70-persistent-net.rules_temp > 70-persistent-net.rules_vi && rm -f 70-persistent-net.rules_temp ? cp -fa 70-persistent-net.rules_vi /etc/udev/rules.d/70-persistent-net.rules
總結
以上是生活随笔為你收集整理的linux脚本怎么把文件地址变成动态地址,Linux脚本程序自动修改网卡配置文件中的MAC地址...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC RadioButton用法详解
- 下一篇: MFC中Radio Button使用方法