Да и нет. В среде POSIX утилиты должны вести себя, как описано спецификацией. На практике это означает, что приспосабливание версиям утилит должно присутствовать в $PATH
. Однако при запущении программы в совместимой POSIX системе, можно выполнять его в несоответствующей среде. На практике, что часто происходит, то, что ОС имеет режим прежней версии и режим POSIX, и находится в режиме прежней версии по умолчанию. Хуже, чем пропавшие без вести некоторых команд, режим прежней версии имеет тенденцию иметь несовместимости в них, такие как опции с различными значениями.
Можно получить пользу PATH
с getconf
. Конечно, это хитро, как getconf
в оригинале $PATH
может не быть правильный. Использование приложений для команды показывает способ сделать это:
command -p getconf PATH
Насколько я понимаю спецификацию, это не необходимо, если Вы запускаете свою программу в приспосабливающей POSIX среде; и если Вы не запускаете свою программу в приспосабливающей POSIX среде, POSIX не применяется. Однако это использование приложений может быть взято в качестве рекомендации: если это не работает, можно чувствовать себя наделенными правом жаловаться поставщику, что независимо от того, что они делают относительно буквы спецификации POSIX, они не выполняют ее дух.
Вы попробовали включая MAC-адреса в различных ifcfg-ethX файлах для различных устройств Ethernet? Дополнительно можно управлять, какой get's устройства, который ethX обрабатывают через udev's 60-net.rules
файл.
# /etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82573E Gigabit Ethernet Controller (Copper)
DEVICE=eth0
BOOTPROTO=static
DHCPCLASS=
HWADDR=00:30:48:56:A6:2E
IPADDR=10.10.10.15
NETMASK=255.255.255.192
ONBOOT=yes
Затем в файле /etc/udev/rules.d/60-net.rules
:
KERNEL=="eth*", SYSFS{address}=="00:30:48:56:A6:2E", NAME="eth0"
Я полагаю, что эта информация используется для хранения устройств настраиваемыми последовательно от начальной загрузки до начальной загрузки.
Для контакта с большим количеством устройств просто устанавливают каждого соответствующие устройства /etc/sysconfig/network-scripts/ifcfg-ethX
файл, и добавляет другую строку к 60-net.rules
файл.
KERNEL=="eth*", SYSFS{address}=="00:30:48:56:A6:2E", NAME="eth0"
KERNEL=="eth*", SYSFS{address}=="00:30:48:56:A6:2F", NAME="eth1"
Вышеупомянутое - то, как Вы делаете это в CentOS 5. X. Файл изменяется в CentOS 6.x на 70-persistent-net.rules
, и формат немного отличается также:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="54:52:00:ff:ff:dd", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Насколько я знаю, Вам нужен относительно новый выпуск. RHEL 6, кажется, поддерживает это (Последовательное Именование Сетевого устройства), хотя это действительно должно быть конкретно включено в большинстве систем. Fedora 15 + также делает это, и, Fedora 17, это, кажется, режим по умолчанию.
Я не знаю точно, когда это изменение было полностью принято и, более важное для этого вопроса, если существует какой-либо способ бэкпортировать это к ряду RHEL 5. Это - запуск, по крайней мере.
/etc/udev/rules.d/70-persistent-net.rules
) так выполнение так в RHEL5 не должно быть слишком трудным. Кроме того, метод Fedora немного отличается в этом, он использует детерминированный алгоритм при именовании интерфейсов, который отличается, чем eth*
соглашение о присвоении имен.
– Bratchley
11.05.2013, 17:45
Необходимо получить аппаратный адрес:
ifconfig -a | grep HWaddr
Или возможно:
tail -v /sys/devices/*/*/net/eth*/address
# or
tail -v /sys/devices/*/*/*/net/eth*/address
find
должен был соответствовать.
Также проверка:
cat /etc/udev/rules.d/70-persistent-net.rules
Se комментирует ниже.