Header RSS Feed
 
If you only want to see the articles of a certain category, please click on the desired category below:
ALL Android Backup BSD Database Hacks Hardware Internet Linux Mail MySQL Monitoring Network Personal PHP Proxy Shell Solaris Unix Virtualization VMware Windows Wyse

Installing and testing the new pywbem 0.8 (development version)
Wednesday - Apr 8th 2015 - by - (2 comments)

The python module "pywbem" is the essential piece of the monitoring plugin check_esxi_hardware. It allows to gather information from the ESXi CIM server and therefore detect hardware failures.

In the last couple of years pywbem was patched directly by several distributions (Red Hat, SuSE, Ubuntu to name a few) - yet the upstream (original) development of pywbem was stuck in version 0.7.0.

A few months ago, the pywbem project on SourceForge was revived and a new release is just about the corner. Currently there are several development releases of the new version 0.8.0 available for download. You can manually install the new version with the following steps.

1. Download the newest zip file from http://sourceforge.net/projects/pywbem/files/pywbem/pywbem-0.8.0/

2. Make sure you have python installed, otherwise install python. Simply launch the "python" command to see if python is installed:

python
Python 2.7.8 (default, Sep 30 2014, 15:34:38) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

3. Install the python module "M2Crypto". This is a new requirement for pywbem 0.8.0. The packet name is "python-M2Crypto" in openSUSE and "python-m2crypto" in Debian/Ubuntu.

zypper in python-M2Crypto

 4. As root user, unzip the pywbem zip file and launch the python setup script:

unzip pywbem-0.8.0-dev.r728.zip
cd pywbem-0.8.0-dev

python setup.py install
[...]
running install_scripts
copying build/scripts-2.7/wbemcli.py -> /usr/bin
copying build/scripts-2.7/mof_compiler.py -> /usr/bin
changing mode of /usr/bin/wbemcli.py to 755
changing mode of /usr/bin/mof_compiler.py to 755
running install_egg_info
Writing /usr/lib/python2.7/site-packages/pywbem-0.8.0_dev-py2.7.egg-info

5. Test if pywbem can be imported as a python module:

python
Python 2.7.8 (default, Sep 30 2014, 15:34:38) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pywbem
>>> exit()

There was no error after the import command which means the installation worked.

Now I can test the CIM connection:

python
Python 2.7.8 (default, Sep 30 2014, 15:34:38) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pywbem
>>> wbemclient = pywbem.WBEMConnection('https://myesxi.internal', ('root', 'mypass'))
>>> c=wbemclient.EnumerateInstances('CIM_Card')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pywbem/cim_operations.py", line 1018, in EnumerateInstances
    **params)
  File "pywbem/cim_operations.py", line 592, in imethodcall
    timeout=self.timeout)
  File "pywbem/cim_http.py", line 542, in wbem_request
    h.endheaders()
  File "/usr/lib64/python2.7/httplib.py", line 991, in endheaders
    self._send_output(message_body)
  File "/usr/lib64/python2.7/httplib.py", line 844, in _send_output
    self.send(msg)
  File "pywbem/cim_http.py", line 333, in send
    self.connect()
  File "pywbem/cim_http.py", line 419, in connect
    "SSL error %s: %s" % (str(arg.__class__), arg))
pywbem.cim_http.ConnectionError: SSL error <class 'M2Crypto.SSL.SSLError'>: certificate verify failed

Oops. Error. But that's expected. One of the patches added more security in the wbem connection by validating the returned certificate. This bug is already documented in the check_esxi_hardware FAQ. As a workaround, an additional parameter can be added to the pywbem.WBEMConnection function, but in the original 0.7.0 version this parameter does not exist and therefore breaks compatibility.

But now with the newer 0.8.0 version the version name can be read:

python
Python 2.7.8 (default, Sep 30 2014, 15:34:38) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pywbem
>>> import pkg_resources
>>> pkg_resources.get_distribution("pywbem").version
'0.8.0-dev'
>>> exit()

Hence there is now a difference now between the original 0.7.0 and the newer 0.8.0 version which can be checked before applying the additional parameter into the pywbem.WBEMConnection function.

As soon as the 0.8.0 is officially out, I hope that Linux distributions will start to roll out the upstream version again and then you can expect a final bug fix in check_esxi_hardware, too.

 

Add a comment

Show form to leave a comment

Comments (newest first):

Claudio Kuenzler from Switzerland wrote on Apr 28th, 2016:
Now that pywbem 0.8.x is officially released, the easiest method (by far!) is to just use pip.

pip install pywbem


And you're all set.

Gordon Rogers wrote on Apr 28th, 2016:
Thanks for your help, Installing pywbem & is difficult

Thanks to: https://the.randomengineer.com/2014/07/29/ssl-for-python-m2crypto-on-windows/

I now have the ESX script running again with Python 2.7.11 on Windows 7.

My steps:
Download pywbem-0.8.0 as per step 1
In windows you will now get an error when installing with:
C:\Python27\pywbem-0.8.0-dev>setup.py install

So you need to get M2Crypto installed.
Thanks to:
https://the.randomengineer.com/2014/07/29/ssl-for-python-m2crypto-on-windows/
Grab the M2CryptoWin32 package and install with:
C:\Python27\M2CryptoWin32-0.21.1-3>setup.py install


Go to Homepage home
Linux Howtos how to's
Monitoring Plugins monitoring plugins
Links links

Valid HTML 4.01 Transitional
Valid CSS!
[Valid RSS]

6938 Days
until Death of Computers
Why?