Hi All,

I'm relatively new to Python, and I am having some trouble with one of my 
scripts. Basically, this script connects to a server via ssh, runs Dell's 
omreport output, and then externally pipes it to a mail script in cron. The 
script uses an external call to grep via subprocess, but I would like to 
internalize everything to run in Python. I've read that re can accomplish the 
filtering, but I am having trouble getting it to duplicate what I already have.

##### USING EXTERNAL GREP #####

# display RAID controller info

cmd = ['ssh r...@server.ip -C \"/opt/dell/srvadmin/sbin/omreport storage 
vdisk\"']

print '########## Array Status ##########'

p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
if call(["grep", "-i", "ID"], stdin=p.stdout) != 0:
   print final
   sys.stdout.write(p)
p.wait()

###### END #######

This gives me:

####### Array Status ##########
ID                                : 0
Layout                            : RAID-1
Associated Fluid Cache State      : Not Applicable
----

vs the full output of:

########## Array Status ##########
List of Virtual Disks in the System

Controller PERC H310 Mini (Embedded)
ID                                : 0
Status                            : Ok
Name                              : Main
State                             : Ready
Hot Spare Policy violated         : Not Assigned
Encrypted                         : Not Applicable
Layout                            : RAID-1
Size                              : 2,794.00 GB (3000034656256 bytes)
T10 Protection Information Status : No
Associated Fluid Cache State      : Not Applicable
Device Name                       : /dev/sda
Bus Protocol                      : SATA
Media                             : HDD
Read Policy                       : No Read Ahead
Write Policy                      : Write Through
Cache Policy                      : Not Applicable
Stripe Element Size               : 64 KB
Disk Cache Policy                 : Enabled

##### END ####

I've been tinkering around with re, and the only code that I've come up with 
that doesn't give me a type error is this:

cmd = ['ssh r...@server.ip -C \"/opt/dell/srvadmin/sbin/omreport storage 
vdisk\"']

print '########## Array Status ##########'

p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)

for line in p.stdout:
        final = re.findall('ID', line, re.DOTALL)
        print final
p.wait()


Which returns this:

########## Array Status ##########
[]
[]
[]
['ID']
[]
[]
[]
[]
[]
['ID']
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]

Obviously, not what I want. Can anyone feed some input?

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to