2026-03-12 20:23:15
This commit is contained in:
45
vdh/list_ovm_physical_disks.py
Normal file
45
vdh/list_ovm_physical_disks.py
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/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()))
|
||||
Reference in New Issue
Block a user