Назад | Перейти на главную страницу

Передача переменных в кикстарте

У меня есть файл кикстарта, который принимает имя хоста в разделе% pre. Кажется, я не могу понять, как получить это двумя первыми. Как вы видите, он отправляет информацию о сервере на другое устройство, которое затем настраивает сервер на основе другой базы данных. Однако мне нужно выяснить, как принять параметр имени хоста и отправить его на публикацию.

%pre
#!/bin/sh
exec < /dev/tty6 > /dev/tty6
chvt 6
clear
echo "################################"
echo "# Running Pre Configuration    #"
echo "################################"
echo -n "Give hostname: "
read hostname
hostname $hostname
echo $hostname > /home/hostname
echo $hostname > /mnt/sysimage/home/hostname
exec < /dev/tty1 > /dev/tty1
chvt 1

%packages
@base
@core

%post
exec < /dev/tty6 > /dev/tty6
chvt 6
ip0=`ifconfig eth0 |grep -e addr:10.0|cut -d':' -f2|awk '{print $1}'`;
ip1=`ifconfig eth1 |grep -e addr:10.0|cut -d':' -f2|awk '{print $1}'`;
mac0=`ifconfig eth0 |grep HWaddr|awk '{print $5}'`;
mac1=`ifconfig eth1 |grep HWaddr|awk '{print $5}'`;
os=`cat /home/hostname` ;
hostname=`cat /home/hostname`;
service sshd start
echo "$ip0^$mac0^$ip1^$mac1^$os^$hostname^none"  >/dev/tcp/10.0.0.1/999
exec < /dev/tty1 > /dev/tty1
chvt 1

В приведенном выше примере "hostname $ hostname" работает для некоторых ОС, но не для всех. Я хотел бы сделать его динамичным на основе информации, представленной в предварительной версии, но мне не повезло.

Сделать нокорень %post сниппет и вместо этого переместите туда имя хоста:

%post --nochroot 
echo $hostname > /mnt/sysimage/home/hostname

Если $hostname переменная изменяется, затем повторить $hostname в %pre во временную папку, а затем переместите файл в %post --nochroot вместо.

Это потому что %pre происходит перед вы устанавливаете, а у вас нет /mnt/sysimage/home все же. Вот почему вы хотите творить чудеса после ОС установлена, а поскольку %pre работает вне chroot, а обычный %post внутри вы должны сделать ход в nochroot %post.