O problema com check_esxi_hardware e um usuário de função somente leitura ou não administrador (não raiz) é devido a um recurso PAM ou bug no ESXi 5.1 e posterior, dependendo do seu ponto de vista.
Qualquer usuário que seja criado e atribuído a qualquer função que não seja a função de administrador está configurado para negar ALL em /etc/security/access.conf. Mesmo se você clonar a função de administrador e designar o usuário criado para essa função de clone, ele será configurado para negar ALL em /etc/security/access.conf.
Eu criei um usuário "nagios" em um host ESXi 5.5 localmente (não pelo vCenter) e o atribui à "Função somente leitura" na guia Permissões. Por padrão, suas permissões no access.conf são "-: nagios: ALL"
Se eu ssh para o host do ESXi edite o /etc/security/access.conf e mude as permissões do usuário nagios para "+: nagios: sfcb" ou "+: nagios: ALL", então check_esxi_hardware funciona.
Usar "+: nagios: sfcb" restringe o usuário "nagios" para que ele possa acessar somente o Serviço CIM.
O problema que você encontra agora é que as alterações em /etc/security/access.conf não são persistentes nas reinicializações.
Este é um tópico nas comunidades da VMware que está discutindo esse problema:
link
Este é um artigo muito bom que discute o mesmo problema usando o wbem:
link
Estes são dois blogs discutindo mudanças persistentes durante as reinicializações no ESXi:
www.therefinedgeek.com.au/index.php/2012/02/01/enabling-ssh-access-in-esxi-5-0-for-non-root-users /
www.virtuallyghetto.com/2011/08/how-to-persist-configuration-changes-in.html
Eu não posso fazer os dois últimos links hiperlinks, pois este é o meu primeiro post para serverfault e até você ter 10 pontos de reputação, você só pode colocar dois links em uma resposta (o que é justo).
Ainda não decidi qual solução utilizarei para tornar isso persistente nas reinicializações. Ainda estou testando.
Obrigado