我對PHP知之甚少,所以決定創建一個基於Web的工具來生成Red Hat kickstart文件將是一個很好的項目。除此之外,該工具將解析CSV文件並生成包含從中獲取的數據的表格。輸入文件格式如下:在PHP中創建任意行數的HTML表格
host1,10.153.196.248,255.255.255.0,10.153.196.1,00:50:56:ac:69:cb ,10.153.157.113,255.255.255.128,10.153.157.1, ,10.153.157.241,255.255.255.128,10.153.157.129, ,/home,10,,, ,swap,10,,, ,/opt,60,,, ,/data,30,,, ,,,,, host2,10.153.155.124,255.255.255.128,10.153.155.1,00:50:56:ac:69:ce ,10.153.157.114,255.255.255.128,10.153.157.1, ,10.153.157.242,255.255.255.128,10.153.157.129, ,/home,10,,, ,swap,10,,, ,/opt,60,,, ,/data,30,,, ,,,,,
每段文本都代表一個服務器的信息。字段說明如下:
hostname,eth0 IP, eth0 netmask, eth0 gateway, eth4 MAC null,eth1 IP, eth1 netmask, eth1 gateway, null blank,eth2 IP, eth2 netmask, eth2 gateway, null null,partition name, partition size in GB, null, null null,partition name, partition size in GB, null, null null,partition name, partition size in GB, null, null null,partition name, partition size in GB, null, null null,null,null,null,null
此刻,我可以分析它,併產生與輸入文件是在表中的行每行的表。產生
function processFile($workFile) {
if (file_exists($workFile)) {
print '<table>';
$fh = fopen("$workFile", 'rb');
if ($fh) {
for ($line = fgets($fh); !feof($fh); $line = fgets($fh)) {
$line = trim($line);
$info = explode(',', $line);
print '<tr><td>' . $info[0] . '</td><td>' . $info[1] . '</td><td>' . $info[2] . '</td><td>' . $info[3] . '</td></tr>';
}
} else {
print "Failed to open $workFile";
}
print '</table>';
} else {
print "File $workFile does not exist";
}
}
:
host1 eth0 IP eth0 netmask eth0 gateway eth1 IP eth1 netmask eth1 gateway eth2 IP eth2 netmask eth2 gateway partition 1 partition 1 size partition 2 partition 2 size partition 3 partition 3 size partition 4 partition 4 size host2 eth0 IP eth0 netmask eth0 gateway eth1 IP eth1 netmask eth1 gateway eth2 IP eth2 netmask eth2 gateway partition 1 partition 1 size partition 2 partition 2 size partition 3 partition 3 size partition 4 partition 4 size
這是一個開始處理這個功能。但是,並不是每個服務器都有四個分區。有些會有更多,有些會少一兩個。事先並不知道這些信息會阻礙我想要做的事情,那就是在每個服務器的分區信息下面添加一行,並且可能會將每個服務器分解到自己的表中。沿此線的東西:
host1 eth0 IP eth0 netmask eth0 gateway eth1 IP eth1 netmask eth1 gateway eth2 IP eth2 netmask eth2 gateway partition 1 partition 1 size partition 2 partition 2 size partition 3 partition 3 size partition 4 partition 4 size partition 5 partition 5 size partition 6 partition 6 size How many disks? [Text Field} host2 eth0 IP eth0 netmask eth0 gateway eth1 IP eth1 netmask eth1 gateway eth2 IP eth2 netmask eth2 gateway partition 1 partition 1 size partition 2 partition 2 size partition 3 partition 3 size partition 4 partition 4 size How many disks? [Text Field}
我當時的想法是,我將不得不在CSV文件中的字段表明該行包含分區信息。這似乎是最簡單的方法。我想知道是否有另一種方法可以使用,但不需要改變輸入文件的格式。
我還必須弄清楚如何使用包含所有空字段的行作爲分隔符。
任何想法如何我可以接近這將不勝感激。
爲什麼不使用mysql數據庫呢? –
也許是從其他來源導入數據 – Flosculus
該工具的目的是獲取從現有電子表格創建並用於生成kickstart文件的CSV文件。文件生成後,CSV是不必要的。它可能會被保留用於考古目的,但除此之外,以數據庫的形式持續存在是過度的。如果CSV丟失,則可以通過電子表格重新創建CSV,如果再次需要,可能性不大。 – theillien