Files
oracle/vdh/list_ovm_physical_disks.py
2026-03-12 21:23:47 +01:00

46 lines
2.4 KiB
Python

#!/usr/bin/env python2
### uses the OVM CLI to give an overview of the physcial disks known by the ovm manager, together with the WWID, size, ... information
### Can be executed from any host which has ssh (port 10000) access to the ovm manager
### When executed, the script will ask for the OVM hostname or ip address and for the admin password
import sys
import re
import paramiko
import getpass
OvmHost=raw_input("OVM hostname or ip address: ")
ovmPwd=getpass.getpass("admin user password: ")
print
print("{lunid:40s} {state:10s} {size:10s} {shareable:10s} {wwid:60s} {lunname:70s}".format(lunid="OVM Lun ID", state="Status", size="Size (GiB)", shareable='Shareable', wwid="WWID", lunname="OVM LUN Name"))
print("{lunid:40s} {state:10s} {size:10s} {shareable:10s} {wwid:60s} {lunname:70s}".format(lunid="---------------------------------------", state="----------", size="----------", shareable="----------", wwid="-----------------------------------------------------------", lunname="---------------------------------------------------------------------"))
client=paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(OvmHost, port=10000, username='admin', password=ovmPwd, allow_agent=False,look_for_keys=False)
stdin,stdout,stderr=client.exec_command("list physicaldisk")
PDOutput=stdout.read()
for PDLine in PDOutput.split('\n'):
if "id:" in PDLine :
PD = re.split('[:\s+]', PDLine.strip(), maxsplit=4)
client.connect(OvmHost, port=10000, username='admin', password=ovmPwd, allow_agent=False,look_for_keys=False)
stdin,stdout,stderr=client.exec_command("show physicaldisk id=" + PD[1])
PDDetailOutput=stdout.read()
PDWWID=''
PDState=''
PDSize=''
for PDDetailOutputLine in PDDetailOutput.split('\n'):
if 'Page83 ID =' in PDDetailOutputLine:
PDWWID = re.split('=', PDDetailOutputLine.strip())
if 'State =' in PDDetailOutputLine:
PDState = re.split('=', PDDetailOutputLine.strip())
if 'Size (GiB) =' in PDDetailOutputLine:
PDSize = re.split('=', PDDetailOutputLine.strip())
if 'Shareable =' in PDDetailOutputLine:
PDShareable = re.split('=', PDDetailOutputLine.strip())
print("{lunid:40s} {state:10s} {size:10.2f} {shareable:10s} {wwid:60s} {lunname:70s}".format(lunid=PD[1].strip(), state=PDState[1].strip(), size=float(PDSize[1].strip()), shareable=PDShareable[1].strip(), wwid=PDWWID[1].strip(), lunname=PD[4].strip()))