PXE를 사용하여 Linux 운영 체제를 설치하고 있으며 변수나 파일을 사용하여 프로세스를 자동화하고 싶습니다. 다른 파일에서 IP 주소를 가져와서 pxe ksnew.cfg 파일에 매개변수로 추가하는 방법을 알아야 합니다. 예를 들어, 다음 nfs 명령이 있는 경우:
nfs --server=10.0.0.110
ksnew.cfg 파일에서 이것을 다음으로 바꾸고 싶습니다.
nfs --server=$ip
다른 파일에서 $ip를 가져옵니다(저는 서버가 많고 서로 다른 IP를 사용합니다).
이를 수행할 수 있는 방법이 있습니까? 내 문제를 해결할 수 있는 다른 방법이 있나요?
감사해요
답변1
내 킥스타트는 약간 녹슬었지만, 킥스타트에서 처리할 수 있는 파일을 생성하는 일부 쉘 스크립트를 포함할 수 있어야 합니다.
다음 코드 조각을 가정해 보겠습니다.
%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
[ ... ]
궁극적으로 파일을 편집하여 로컬 IP, DHCP 푸시 도메인 이름, 웹 서비스 등을 %pre
찾아 nfs 서버를 원격으로 추론하게 됩니다.curl
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