如何将 ip 作为变量添加到 pxe cfg 文件

如何将 ip 作为变量添加到 pxe cfg 文件

我正在使用 PXE 安装我的 Linux 操作系统,并且我想使用变量或文件来自动化我的过程。我需要知道如何从另一个文件导入 IP 地址并将其作为参数添加到 pxe ksnew.cfg 文件中。例如,如果我有这个 nfs 命令:

nfs --server=10.0.0.110

在 ksnew.cfg 文件中,我想将其替换为:

nfs --server=$ip

并从其他文件导入 $ip (我有许多服务器,它们使用不同的 IP)。

有办法做到这一点吗?还有其他方法可以解决我的问题吗?

谢谢

答案1

我的 kickstart 有点生疏,尽管您应该能够嵌入一些创建文件的 shell 脚本,然后可以由您的 kickstart 处理这些文件。

让我们假设以下代码片段:

%include /tmp/pre_network
firewall --disabled
%include /tmp/install_url

[ ... ]

%pre
#!/bin/sh
exec </dev/tty8 >/dev/tty8
chvt 8
#set the following vars with whatever logic applies in your case, ...
REMOTENFS=10.2.3.4
REMOTEPROXY=10.2.5.4
#//
echo "network --bootproto=dhcp --hostname=pxe.localdomain --noipv6" >/tmp/pre_network
if test "$REMOTENFS"; then
    echo "nfs --server $REMOTENFS" >/tmp/pre_network
elif test "$REMOTEPROXY"; then
    echo "url --url=http://mirror.centos.org/centos/7/os/x86_64/ --proxy=http://$REMOTE_PROXY:3128
else
    echo "url --url=http://mirror.centos.org/centos/7/os/x86_64/
fi >/tmp/install_url
clear
chvt 1
%end

[ ... ]

最终,您将编辑该文件,%pre以便它查找您的本地 IP、DHCP 推送的域名、curlWeb 服务或其他任何内容,...推断您的 nfs 服务器远程。

由于您询问如何从 kickstart 运行 sed 命令,请注意您还可以编写脚本来完成安装:

%post
#!/bin/sh
exec </dev/tty8 >/dev/tty8
chvt 8
sed -i 's|.*|myhostname|' /mnt/sysimage/etc/hostname
chvt 1
%end

答案2

sed  -i "/nfs/s/=.*//g" ksnew.cfg file ;while read line; do  sed "s/$/='$line'/g" ksnew.cfg file ; done <Inputfile_consists_of_ip's

ksnew.cfg 文件===> 配置文件

Inputfile_consists_of_ip's===> 文件由 IPS 列表组成

Inputfile_consists_of_ip 包含以下内容

10.10.10.11

11.1.1.2

3.3.3.5

所以输出将是

nfs --server==10.10.10.11

nfs --server==11.1.1.2

nfs --server==3.3.3.5

相关内容