On Sat, 2011-02-19 at 04:09 +0100, Patrick Lists wrote: > On 02/19/2011 02:37 AM, Pat wrote: > > My kickstart file is usually used on systems with 1 or 2 network interfaces installed. If my kickstart file has the following lines: > > > > network --device eth0 --bootproto dhcp > > network --device eth1 --onboot no --bootproto dhcp > > > > > > It will fail if I use it on a system with only 1 network interface since eth1 doesn't exist. > > > >> From a kicksstart file how do I detect the number of network interfaces installed on the system and then only assign eth1 as above if that number is 2 or more? If it matters, it's possible the network interfaces are not plugged into the network when the kickstart is run. Thanks. > > You could test for the number of interfaces. Since I'm a total n00b in > this area hopefully the experienced folks who monitor this list will > have a good laugh at my "scripting" and come up with something better > that actually works :) Well, dunno about works but a simpler version at least Task: if eth1 exist - configure it Solution: #Top part: #Always config eth0 network --device eth0 --bootproto dhcp %include /tmp/optionalnetwork.inc %pre #make sure the file is there to not cause any errors touch /tmp/optionalnetwork.inc /sbin/ifconfig eth1 &>/dev/null && \ echo "network --device eth1 --onboot no --bootproto dhcp"\ >/tmp/optionalnetwork.inc Or if ksbootenv ifconfig is different and doesn't fail if not found ifconfig -a|grep ^eth1 &>/dev/null && \ echo "network --device eth1 --onboot no --bootproto dhcp"\ >/tmp/optionalnetwork.inc No need to do some fancy interface count, if it is eth1 you want to configure, just check if it's there or not. One issue is if eth1 use a different driver then eth0 and that one isn't loaded, then you must first modprobe the driver before checking if the interface is there. > Here's how I would try to solve it. Totally untested, use at own risk. I second that for my code > Mind the linewrap. It's all one line. My box has lo, br0, eth0 and > virbr0 so the script should give a total of 4 interfaces. > > $ ifconfig -a | grep -vE 'inet|UP|RX|TX|collisions|Interrupt' | awk > 'BEGIN {no_of_interfaces=0} /^[a-z]/ {print $1}' | awk 'END > {no_of_interfaces=NR; print "Number of interfaces: " no_of_interfaces}' > > Number of interfaces: 4 (correct so apparently this works) > > You could add this to the %pre section in your kickstart file: > > %pre > NO_OF_INTERFACES=`ifconfig -a | grep -vE > 'inet|UP|RX|TX|collisions|Interrupt' | awk 'BEGIN {no_of_interfaces=0} > /^[a-z]/ {print $1}' | awk 'END {no_of_interfaces=NR; print > no_of_interfaces}'` > echo "INTERFACE_COUNT=$NO_OF_INTERFACES" > /tmp/interface_count.txt > > Then in the %post section test if the value is greater than or equal to > 2 in which case you configure both interfaces. Or else configure one > interface: > > %post > # first get the nr of interfaces from the interface_count.txt file > # afaik usually at the top of %post > source /tmp/interface_count.txt > > # test the value. not sure if I need to quote INTERFACES and 2 > if [ "\$INTERFACE_COUNT" -ge "2" ]; then > # configure 2 nics > network --device eth0 --bootproto dhcp > network --device eth1 --onboot no --bootproto dhcp > else > # configure 1 nic > network --device eth0 --bootproto dhcp > fi > > Since I don't know awk I got the syntax from the excellent n00b-friendly > awk tutorial at > http://bashshell.net/stream-filtering-utilities/exercise-1-learning-awk-basics/ > > Hope this helps. > > Regards, > Patrick > > _______________________________________________ > Kickstart-list mailing list > Kickstart-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/kickstart-list _______________________________________________ Kickstart-list mailing list Kickstart-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/kickstart-list