我对 PHP 知之甚少,因此决定创建一个用于生成 Red Hat kickstart 文件的基于 Web 的工具将是一个很好的学习项目。除其他外,该工具将解析 CSV 文件并生成包含从中获取的数据的表格。输入文件格式如下:
主机1,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, ,/家,10,,, ,交换,10,,, ,/opt,60,,, ,/数据,30,,, ,,,,, 主机2,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, ,/家,10,,, ,交换,10,,, ,/opt,60,,, ,/数据,30,,, ,,,,,
每个文本部分代表一个服务器的信息。字段如下:
主机名、eth0 IP、eth0 网络掩码、eth0 网关、eth4 MAC 空,eth1 IP,eth1 网络掩码,eth1 网关,空 空白,eth2 IP,eth2 网络掩码,eth2 网关,空 null,分区名称,分区大小(GB),null,null null,分区名称,分区大小(GB),null,null null,分区名称,分区大小(GB),null,null null,分区名称,分区大小(GB),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 网络掩码 eth0 网关 eth1 IP eth1 网络掩码 eth1 网关 eth2 IP eth2 网络掩码 eth2 网关 分区 1 分区 1 大小 分区 2 分区 2 大小 分区 3 分区 3 大小 分区 4 分区 4 大小 host2 eth0 IP eth0 网络掩码 eth0 网关 eth1 IP eth1 网络掩码 eth1 网关 eth2 IP eth2 网络掩码 eth2 网关 分区 1 分区 1 大小 分区 2 分区 2 大小 分区 3 分区 3 大小 分区 4 分区 4 大小
这是一个开始。然而,并不是每台服务器都会有四个分区。有些人会有更多,有些人会少一两个。并且不提前知道这些信息会阻碍我想要做的事情,即在每个服务器的分区信息下方添加一行,并可能将每个服务器分解成自己的表。类似这样的东西:
host1 eth0 IP eth0 网络掩码 eth0 网关 eth1 IP eth1 网络掩码 eth1 网关 eth2 IP eth2 网络掩码 eth2 网关 分区 1 分区 1 大小 分区 2 分区 2 大小 分区 3 分区 3 大小 分区 4 分区 4 大小 分区 5 分区 5 大小 分区 6 分区 6 大小 多少个磁盘?[文本域} host2 eth0 IP eth0 网络掩码 eth0 网关 eth1 IP eth1 网络掩码 eth1 网关 eth2 IP eth2 网络掩码 eth2 网关 分区 1 分区 1 大小 分区 2 分区 2 大小 分区 3 分区 3 大小 分区 4 分区 4 大小 多少个磁盘?[文本域}
我的普遍想法是,我必须在 CSV 文件中有一个字段表明该行包含分区信息。这似乎是最简单的方法。不过,我想知道是否还有其他方法可以使用,不需要更改输入文件的格式。
我还必须弄清楚如何使用包含所有空字段的行作为节分隔符。
任何关于我如何解决这个问题的想法都将不胜感激。