Собираюсь написать на C# программу для мониторинга коммутаторов (какие порты активны, включить/отключить заданный порт, работает ли кулер на коммутаторе и т.д.).
Как я понял, управление коммутаторами может осуществляться посредством протоколов SNMP, Telnet, SSH.
Так как раньше с подобными задачами не сталкивался, не знаю, какой лучше из них использовать.
Еще есть такой момент, что в .NET нет встроенной поддержки этих протоколов, и придётся юзать сторонние библиотеки, которые могут оказаться кривыми.
Хотелось бы услышать любые советы по этому поводу.
SNMP (начните с v2c, если получится, реализуйте v3с повышенной безопасностью) для снятия данных вроде статистики интерфейсов, загрузки процессора и т.д. При помощи SNMP можно попробовать изменять конфигурацию (включить/выключить интерфейс), но в этом случае стоит озаботиться вопросами безопасности (т.е. использовать SNMPv3 с аутентификацией и/или шифрованием). Если что-то не получится сделать через SNMP, то используйте SSH и соответствующие команды cli.
Касательно telnet, не думаю, что этот протокол вообще стоит использовать в "продакшене" (передача данных происходит открытым текстом).
Коммутаторы какие используются (вендор/линейка)?
Тогда, скорее всего, большинство задач вы сможете решить при помощи SNMP[v3].
Вот релевантные ссылки (сайт, как я понял, к компании D-link отношения не имеет, но информация там представлена удобно): 1,2,3.
В случае Cisco catalyst - также snmp (ну и, возможно, ssh; есть еще NETCONF, но он не на всех устройствах поддерживается). А вот у Juniper есть, насколько мне известно, какой-то свой API для конфигурирования на основе XML.
На типовые задачи конечно лучше snmp - быстрее ввод, на выходе уже почти структурированная информация. На по сложнее ssh/telnet. Но это если надо будет запускать всякие трейсерты, lookupы, пинги...