46 lines
2.4 KiB
Python
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()))
|