快速搞定DHCP的MAC與IP綁定的dhcpd.conf檔案

來源:互聯網
上載者:User
快速搞定DHCP的MAC與IP綁定的dhcpd.conf檔案

在Linux下,要實現dhcp的MAC與IP綁定,就需要在/etc/dhcpd.conf檔案中為每一個MAC指定一個IP,如果僅僅是在幾台電腦群組成的網路中,用手工編寫一下dhcpd.conf不需要多少時間,但如果是上百台,甚至是上千台,那情況就不同了。

那如何能利用手頭的MAC地址與IP地址的對照表來快速產生dhcpd.conf呢?最近因為有這方面的需要,想想也只有編個小程式來實現,因為只是實現一個簡單的功能,沒有在錯誤偵測上花太大的精力,程式原始碼如下:

<php
/********************************************************
* 程式用途:由文字檔產生使用MAC與IP綁定的dhcpd.conf
* 使用方法: (1)請設定下面的環境變數
* (2)把符合格式要求的檔案複製到工作目錄中
* (3)運行本程式即可產生需要的格式檔案
*
* Written by Sideway 2006.06.30 zhangqi357@gmail.com
* 發布協議:GPL
********************************************************/

/***********************************
* 環境變數設定
*
* 此地區可由使用者修改成實際的資料
***********************************/

/********************************
* 工作目錄,源檔案與目標檔案存放的目錄
********************************/
$workDir = "c:/www/";

/********************************
* 源檔案的檔案名稱
* 源檔案的格式必須為CSV格式,
* 共三個欄位,依次為主機名稱、MAC地址、IP地址
* 如下:
* station1,00:0F:20:2F:CE:8E,126.100.151.40
* station2,00:0F:20:2F:CE:9E,126.100.151.41
*
********************************/
$sourceFilename = "macip.csv";

/********************************
* 目標檔案的檔案名稱
********************************/
$targetFilename = "dhcpd.conf.txt";

/********************************
* dhcpd.conf檔案的頭部資訊
********************************/
$dhcpHeard1 = "default-lease-time 3600;\n";
$dhcpHeard2 = "max-lease-time 7200;\n";
$dhcpHeard3 = "ddns-update-style none;\n";
$dhcpHeard4 = "option subnet-mask 255.255.255.0;\n";
$dhcpHeard5 = "option broadcast-address 126.100.151.255;\n";
$dhcpHeard6 = "option routers 126.100.151.254;\n";
$dhcpHeard7 = "option domain-name-servers 126.100.151.21;\n";
$dhcpHeard8 = "option domain-name \"xsj.gov.cn\";\n\n";
$dhcpHeard9 = "subnet 126.100.151.0 netmask 255.255.255.0 {\n";
$dhcpHeard10 = "";
$dhcpHeard11 = " range 126.100.151.41 126.100.151.239;\n";
$dhcpHeard12 = "}\n\n";
$dhcpHeard13 = "group {\n";

/********************************
* dhcpd.conf檔案的尾部資訊
********************************/
$dhcpFoot = "}";

/***********************************
* 以下為系統處理部份
*
* 此地區無需修改,除非需要更改程式的功能
***********************************/
echo "Processing,please wait....
";
$sourceFile = $workDir.$sourceFilename;
$targetFile = $workDir.$targetFilename;
$dhcpHeard = $dhcpHeard1.$dhcpHeard2.$dhcpHeard3.$dhcpHeard4.$dhcpHeard5.$dhcpHeard6.
$dhcpHeard7.$dhcpHeard8.$dhcpHeard9.$dhcpHeard10.$dhcpHeard11.$dhcpHeard12.$dhcpHeard13;
$sourceHandle = fopen($sourceFile,"r+");
$targetHandle = fopen($targetFile,"w");
fputs ($targetHandle,$dhcpHeard);
while ($sourceData = fgets ($sourceHandle))
{
/***************************************
*
* 每一迴圈取出源檔案的一行進行處理
*
***************************************/
$sourceDataLen = strlen($sourceData);
$FieldNameNum = 0;
for ($c=0; $c < $sourceDataLen; $c++) {
$currentChar = substr($sourceData,$c,1);
if ( "," == $currentChar )
{
$FieldNameNum++;
switch ($FieldNameNum){
case 1:
$Hostname = $FieldCont;
$FieldCont = "";
break;
case 2:
$Mac = $FieldCont;
$FieldCont = "";
break;
default :
echo "error";
break;
}
}
else
{
$FieldCont = $FieldCont.$currentChar;
}
} //End of "for ($c=0; $c < $sourceDateLen; $c++)"
$Ip = substr($FieldCont,0,strlen($FieldCont)-1); //需去除最後的分行符號
$FieldCont = "";
$Line1 = "host $Hostname {\n";
$Line2 = " hardware ethernet $Mac;\n";
$Line3 = " fixed-address $Ip;\n";
$Line4 = "}\n\n";
fputs($targetHandle,$Line1.$Line2.$Line3.$Line4);
} //End of "while ($sourceData = fgets ($sourceHandle))"
fputs($targetHandle,$dhcpFoot);
fclose ($sourceHandle);
fclose ($targetHandle);
echo "Finished!!!";
echo "
Please open $workDir find $targetFilename file";
?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.