LINUX.ORG.RU

Выполнение команды через udev

 , ,


0

1

Имеется в организации несколько разных модемов, одни определяются как usb0, другие как eth1, eth2 итд. Можно конечно назначать всем одинаковое название, просто net0 и всё, следующие модемы уже обзовутся в соответствии со стандартными правилами udev - eth2 eth3…, но хочется сделать совсем по уму: если два модема одновременно воткнуто, то первому net0, второму net1, третьему net2 итд:

SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="12d1", PROGRAM="/usr/bin/sudo $(if [[ -d /sys/class/net/net0 ]]; then /usr/bin/sudo var=$(/usr/bin/ls -1 /sys/class/net/ | /usr/bin/tail -n 1 | /usr/bin/grep net[0-9] | /usr/bin/grep -o [0-9]) && $((var+1)); else 0; fi)", NAME="net%c"

Если нет модема, то назначаем имя интерфейса net0, если уже есть, то второму net1 (зачем два модема вставляется не спрашивайте, сам не знаю, видимо когда один из них не работает) Но на udevadm test /sys/class/net/usb0 получаю ошибку:

exit with return code 1

без sudo получал ошибку

exit with return code 2