Update in: 5 March 2024
:
Important Notice:This plugin is not official nor created by PandoraFMS. This plugin is no longer actively maintained or updated. We strongly advise you to explore alternative plugins available in our library for the latest features and support.
get_vcenter_vmhba_total_paths
This plugin connects to a VMware vCenter server to count the paths associated with a specified HBA on an ESXi server. Outputs the total count of matching paths. Includes an option for advanced debugging information.
#!/usr/bin/env python3 """ Author : Christian Date : 16.02.2024 Version : 2.5 Description: Connects to a VMware vCenter server to count the paths associated with a specified HBA on an ESXi server. Outputs the total count of matching paths. Includes an option for advanced debugging information. Usage: python3 /usr/share/pandora_server/util/plugin/get_vcenter_vmhba_total_paths.py esx_host vcenter_name vcenter_username vcenter_password vmhba_number python3 get_vcenter_vmhba_total_paths.py esx_host vcenter_name vcenter_username vcenter_password vmhba_number Pandora Plugin : Plugin command : python3 /usr/share/pandora_server/util/plugin/get_vcenter_vmhba_total_paths.py Plugin parameters : _agentalias_ _field1_ _field2_ _field3_ _field4_ Parameters: esx_host : The hostname of the ESXi server to query. vcenter_name : The IP address or hostname of the vCenter server. vcenter_username : Username for authentication with the vCenter server. vcenter_password : Password for authentication with the vCenter server. vmhba_number : The HBA identifier to filter paths by. Example : vmhba4 """ import sys from pyVim.connect import SmartConnectNoSSL, Disconnect from pyVmomi import vim import atexit # Enabling debug mode based on the command line argument isDebugMode = False # Assigning command-line arguments to variables for easier access esxHost = sys.argv[1] vCenterName = sys.argv[2] vCenterUsername = sys.argv[3] vCenterPassword = sys.argv[4] vmhbaNumber = sys.argv[5] def printDebugMessage(message): """Prints a debug message if debug mode is enabled.""" if isDebugMode: print(f"DEBUG: {message}") def main(): if len(sys.argv) < 6: print("Error: Missing parameters : Usage: get_vcenter_vmhba_total_paths.py esx_host vcenter_name vcenter_username vcenter_password vmhba_number [debug]") sys.exit(1) try: printDebugMessage("Attempting to connect to vCenter...") vCenterConnection = SmartConnectNoSSL(host=vCenterName, user=vCenterUsername, pwd=vCenterPassword, port=443) atexit.register(Disconnect, vCenterConnection) printDebugMessage("Successfully connected to vCenter.") totalPaths = retrievePathInfo(vCenterConnection, esxHost, vmhbaNumber) printDebugMessage(f"Total paths matching '{vmhbaNumber}': {totalPaths}") print(totalPaths) sys.exit(0) except Exception as error: printDebugMessage(f"Error connecting to {vCenterName}: {error}") print(-1) sys.exit(1) def retrievePathInfo(vCenterInstance, esxHost, hbaNameFilter): content = vCenterInstance.RetrieveContent() searchIndex = content.searchIndex host = searchIndex.FindByDnsName(dnsName=esxHost, vmSearch=False) if not host: printDebugMessage("ESXi host not found.") print(-1) sys.exit(1) printDebugMessage(f"Retrieving storage path information for {esxHost}...") pathCount = 0 storageSystem = host.configManager.storageSystem if storageSystem.storageDeviceInfo.multipathInfo: for lun in storageSystem.storageDeviceInfo.multipathInfo.lun: for path in lun.path: if hbaNameFilter in path.name: pathCount += 1 printDebugMessage(f"Found matching path: {path.name}") printDebugMessage(f"Completed path retrieval. Total matching paths: {pathCount}") return pathCount if __name__ == "__main__": main()
</pre>
(Visited 148 times, 1 visits today)