我有一个kickstart文件,它在%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
在上面的“主机名$主机名”的确适用于某些操作系统,但不是全部。 我想根据预先提交的信息使其dynamic,但没有运气。
做一个nochroot %post片段,并在那里移动主机名:
%post --nochroot echo $hostname > /mnt/sysimage/home/hostname
如果$hostnamevariables发生变化,则将%pre的$hostname回显$hostname临时位置,然后将该文件移入%post --nochroot 。
这是因为%pre 在你安装之前就已经发生了,你还没有/mnt/sysimage/home 。 这就是为什么你要在操作系统安装完成后才能使用你的魔术,而且由于%pre在chroot之外工作,而且常规的%post在里面,所以你必须在nochroot %post做这个动作。