I'm trying to write udev rules to make it easier to recognize the network cards in my server. After a reboot it doesn't seem to take place, what am I doing wrong? I'm running Debian Squeeze stable.
Code:
$ uname -a
Linux debian 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux
Code:
# ls -l /etc/udev/rules.d/
total 4
-rw-r--r-- 1 root root 689 Mar 14 04:07 01-network-names.rules
-rw-r--r-- 1 root root 613 Oct 30 20:38 10-vboxdrv.rules
-rw-r--r-- 1 root root 1371 Mar 12 17:38 70-persistent-net.rules
lrwxrwxrwx 1 root root 15 Oct 24 21:15 z60_hdparm.rules -> ../hdparm.rules
Code:
$ cat /etc/udev/rules.d/01-network-names.rules
#This file was created by David Rebbe
#$ ./net-info
#Name MAC IRQ SLOT
#eth0 6c:62:6d:ab:b1:5f 28 03:00.0
#eth2 00:e0:52:b7:a1:4f 20 04:05.0
#eth3 00:e0:52:b8:30:ef 21 04:06.0
#eth4 00:e0:52:b7:31:40 22 04:07.0
#eth5 00:0a:cd:1c:1c:89 27 04:07.0
#lo 00:00:00:00:00:00 0 Loopback device.
KERNEL=="eth?", SYSFS{address}=="6c:62:6d:ab:b1:5f", NAME="eth0"
#KERNEL=="eth?", SYSFS{address}=="00:00:00:00:00:00", NAME="eth1"
KERNEL=="eth?", SYSFS{address}=="00:e0:52:b7:a1:4f", NAME="eth2"
KERNEL=="eth?", SYSFS{address}=="00:e0:52:b8:30:ef", NAME="eth3-test"
KERNEL=="eth?", SYSFS{address}=="00:e0:52:b7:31:40", NAME="eth4"
KERNEL=="eth?", SYSFS{address}=="00:0a:cd:1c:1c:89", NAME="eth5"
Here is the script I used for the above, if anybody is interested:
Code:
#!/bin/bash
# Lists Network interfaces with their IRQ/MAC/Slot
# Copyright (C) 2010 David Rebbe
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
echo -e "Name\t\t\tMAC\t\t\tIRQ\tSLOT"
for dev in `/sbin/ifconfig -a | cut -d' ' -f 1 | xargs`
do
# Find MAC address
mac=`/sbin/ifconfig -a | grep $dev | grep HWaddr | awk '{print $(NF)}'`
if [ -z $mac ]
then
mac="00:00:00:00:00:00"
fi
# Find IRQ matching interface 'name'
#irq=`cat /proc/interrupts |grep $dev | awk '{print $1}' | tr -d ":"`
#if [ -z $irq ]; then
# irq=-1
#fi
#if [[ $dev = "lo" ]]; then
# irq=0
#fi
# Find irq that matches in lspci
# If the script is slow, its due to the following loop.
matched_slot=false
for slot in `lspci | grep Ether | awk ' {print $1}' | xargs`
#for slot in `lspci | awk ' {print $1}' | xargs`
do
irq=`/sbin/ifconfig -a $dev | grep Int | awk '{ print $1 }' | sed 's|Interrupt:||'`
if [[ -z $irq ]]; then
irq=-1
fi
lspci_irq=`lspci -v -s $slot | grep IRQ | awk '{print $(NF)}'`
if [[ $irq = $lspci_irq ]]
then
matched_slot=true
break
fi
done
# echo output
if [[ $matched_slot -eq true ]]
then
if [[ $irq -eq -1 ]]; then
slot="N/A"
fi
if [[ ${#dev} -lt 5 ]]; then
dev="$dev\t"
fi
echo -e "${dev}\t\t${mac}\t${irq}\t${slot}"
fi
done