Возможно это будет 2 скрипта, первый например для определения параметром, а второй непосредственно для выполнения команды на свиче.
Есть энное количество свичей D-Link DES-3028 к которым подключены юзеры.
Так же существует база mysql, где лежат все данные по юзерам, свичам, портам и ip-адресам, т.е. какой юзер куда подключен и какой у него должен быть ip-адрес.
У каждого свича и порта в базе свой id-номер, но у порта еще есть и имя из цифр от 001 до 028, что соответствует номеру порта на самом свиче.
Т.е. в базе номер порта может быть 120, а на свиче 28.
Для примера vasya подключен к порту 27 4-го свича, а petya к порту 2 2-го свича.
Запускаем скрипт для vasya ./acl_dlink.sh vasya
Скрипт лезет в базу находит в таблице vgroups юзера vasya и смотрит какой у него vg_id, в моем случае vg_id=1.
Далее в таблице devport2vgroup определяет к какому порту подключен vg_id=1 и видит port_id=83 что соответствует 83 порту в базе.
Потом в таблице deviceports смотрит на каком свиче находиться порт 83 и какой у него номер на самом свиче.
Видим что порт 83 находиться на свиче dev_id=4 и его номер на самом свиче 027, но надо откинуть все нули чтобы номера были от 1 до 28
Теперь чтобы записать acl на свич, надо узнать какой ip-адрес у свича, смотрим в таблицу devices и видим что у свича id=4 ip-адрес 10.10.0.110.
Еще дальше надо определить какой же все таки прописывать ip-адрес на порту 27 свича с адресом 10.10.0.110.
Это записано в таблице deviceparms, т.е. port_id=83 value=10.10.109.1
Потом запихивает в свич acl-правило в заранее подготовленный профиль, например:
Код: Выделить всё
config access_profile profile_id 10 add access_id auto_assign ip source_ip 10.10.109.1 port 27 permit
Код: Выделить всё
config access_profile profile_id 10 add access_id auto_assign ip source_ip 10.11.110.2 port 2 permit
Код: Выделить всё
login=vasya vg_id=1;
login=petya vg_id=2;
Код: Выделить всё
vg_id=1 port_id=83;
vg_id=2 port_id=2;
Код: Выделить всё
id=2 mac=10.10.0.110;
id=4 mac=10.10.0.109;
Код: Выделить всё
port_id=83 value=10.10.109.1
port_id=2 value=10.11.110.2
Код: Выделить всё
id=2 dev_id=2 name=002
id=83 dev_id=4 name=027
snmpwalk -v2c -c public 10.10.0.109 1.3.6.1.4.1.171.12.9.3.2.1.4.10
Ответ от свича будет примерно такой
- SNMPv2-SMI::enterprises.171.12.9.3.2.1.4.10.1 = IpAddress: 10.10.109.1
SNMPv2-SMI::enterprises.171.12.9.3.2.1.4.10.2 = IpAddress: 10.10.109.2
SNMPv2-SMI::enterprises.171.12.9.3.2.1.4.10.3 = IpAddress: 10.10.109.3
Это будет скрипт для добавления acl на свич, по аналогии которого я думаб уже не составить труда сделать скрипт для удаления acl со свича.
Надеюсь что в долгу не останусь

Может кто за мани поможет, тогда в пм