On Thu, Dec 03, 2015 at 01:25:03PM +0000, Kaesbauer Michael wrote: > Hi, > > up to now I found no way to write an udev rule which renames a specific NIC > by using a MAC address that is returned by a bash script. The reason for > getting the MAC address by the bash script is that the renaming NIC rule > should be applied to different CPUs (with different MACs).
I'm finding it a bit difficult to follow what you mean here. You have different machines with different numbers of NICs and want a particular interface to be given a specific name based on which machine it is running on; and your current implementation wants to do it by the number of NICs? http://www.freedesktop.org/software/systemd/man/systemd.link.html#[Match]%20Section%20Options may be of interest, since you could collect the contents of /etc/machine-id or /etc/hostname and have networkd .link config files set the interface name that way. Something like the following: # /etc/systemd/network/machine1.link [Match] OriginalName=net0 # name the kernel gave the interface initially Host=machine1 # from /etc/hostname [Link] Name=enp1s0 # /etc/systemd/network/machine2.link [Match] OriginalName=net0 # name the kernel gave the interface initially Host=machine2 # from /etc/hostname [Link] Name=enp3s0 # /etc/systemd/network/machine3.link [Match] OriginalName=net0 # name the kernel gave the interface initially Host=machine3 # from /etc/hostname [Link] Name=enp3s0 > > > Here is my udev rule: /etc/udev/rules.d/81-net-rename.rules > > SUBSYSTEM!="net", GOTO="net_name_slot_end" > ACTION!="add|change", GOTO="net_name_slot_end" > KERNEL=="*", ATTR{type}=="1", PROGRAM="/bin/getMAC_DHCP.sh", > ATTR{address}=="%c", NAME="net0" > LABEL="net_name_slot_end" > > > Here is my bash script: > > #!/bin/bash > > NIC_ID= > MACS=(`cat /sys/class/net/*/address`) > > len=${#MACS[*]} > > NIC_CNT=0 > for ((i=0; i != len; i++)); do > mac_str=${MACS[$i]} > if [ $mac_str != "00:00:00:00:00:00" ]; then > let NIC_CNT=$NIC_CNT+1 > fi > done By the way, you could simplify this to: NIC_CNT=0 for mac_str in `cat /sys/class/net/*/address`; do if [ "$mac_str" != "00:00:00:00:00:00" ]; then let NIC_CNT=$NIC_CNT+1 fi done or maybe even NIC_CNT=$(cat /sys/class/net/*/address | grep -v '00:00:00:00:00:00' | wc -l) > > if [ $NIC_CNT -eq 2 ]; then > NIC_ID="enp1s0" > fi > if [ $NIC_CNT -eq 3 ]; then > NIC_ID="enp3s0" > fi > if [ $NIC_CNT -eq 4 ]; then > NIC_ID="enp3s0" > fi > echo $NIC_ID >> $LOG > > cat /sys/class/net/$NIC_ID/address > > > Kind regards > Michael > > ______________________________________________________________ > > KRONES AG > Vorstand: Volker Kronseder (Vors.), > Christoph Klenk, Rainulf Diepold, Thomas Ricker, Markus Tischer, Ralf > Goldbrunner > Vors. des Aufsichtsrates: Ernst Baumann > Sitz Neutraubling > Registergericht Regensburg HRB 2344 > ______________________________________________________________ > > Der Inhalt dieser E-Mail und jeder Anhang ist vertraulich. > Diese Inhalte sind nur fuer die benannten Adressaten. > Wenn Sie diese E-Mail durch einen Fehler erhalten haben, > benachrichtigen Sie sofort Ihren Administrator oder den Absender. > Behandeln Sie die E-Mail vertraulich. > > * Diese E-Mail wurde auf Viren und gefaehrlichen Inhalt geprueft. * > ______________________________________________________________ > > The contents of this email and any attachments are confidential. > They are intended for the named recipient(s) only. > If you have received this email in error please notify the system manager > or the sender immediately and do not disclose the contents to anyone or > make copies. > > * This e-Mail was scanned for viruses, vandals and malicious content. * > _______________________________________________ > systemd-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/systemd-devel _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
