Python и ESXcli

Если вы захотите собирать информацию о версии драйвера и прошивки сетевого интерфейса ESXi, то можете воспользоваться пакетом от VMware, который нужно поставить на Linux. Есть отдельные версии для 7.0 и 6.7.

После этого Вам потребуется:

  1. подключить к Python библиотеку Subprocess;
  2. если vCenter использует недоверенный сертификат, то вам потребуется игнорировать эту ошибку. Один из вариантов – указать в команде отпечаток (thumbprint) сертификата vCenter, к которому подключены сервера ESXi (оптимально собирать информацию через него). Можно выполнить “esxcli -s <vcenter> -u <vcenter_login> -p <vcenter_password> -h <esxi>”, чтобы получить отпечаток.

Для вывода списка сетевых адаптеров с используемым драйвером и красивым названием воспользуемся командой esxcli -s <vcenter> -u <vcenter_login> -p <vcenter_password> -h <esxi> --thumbprint <vcenter_thumbprint> network nic list
Для вывода подробной информации по адаптеру, из которой можно взять версию драйвера и прошивки воспользуемся похожей командой ESXCLI network nic get -n vmnic7, например.

Вот пример скрипта, который делает “что-то похожее”:

В результате работы функции будет возвращен словарь, содержащий набор сетевых карт хоста и версий прошивок/драйверов.

Главный минус скрипта: если VMware решит изменить порядковый номер строки, в которых она выводит драйвер и прошивку сетевого адаптера, скрипт сломается.

UPD: пример XML для самостоятельных пинков ESXi:

 

4 thoughts on “Python и ESXcli”

    1. Естественно, так как в PowerCLI для ESXCLI придумали готовую обертку. Вжух – и у вас готов результат выполнения команды, уже оформленный в объект со свойствами.
      Тут же вы самостоятельно “парсите” вывод командной строки.
      Впрочем, Вячеслав (наш старый соавтор aka virus) подсказывает, что при желании можно запрашивать XML с хоста с выводом esxcli на нем.
      Все текущие реализации ESXcli делают в хост POST на URL https://1.1.1.1/sdk/webService с XML’кой, которую я добавил в пост.
      В ответ вы получаете XML, содержащий искомую информацию (результат запуска esxcli network nic get -n vmnic5).

      Существующие реализации vmomi/automation sdk на python не содержат средств работы с ESXcli, а хочется 🙂

      1. esxcli сама по себе и есть обёртка. Чтоб не было “главного минуса скрипта” с нумерацией срок, достаточно глянуть help и увидеть:
        –formatter=FORMATTER
        Override the formatter to use for a given command.
        Available formatter: xml, csv, keyvalue
        Ну и других “оберток” можно на гитхабе найти…

Leave a Reply

Your email address will not be published. Required fields are marked *