86 lines
1.9 KiB
Python
86 lines
1.9 KiB
Python
|
|
||
|
|
||
|
import sys
|
||
|
import os
|
||
|
import platform
|
||
|
|
||
|
class xCatError(Exception):
|
||
|
def __init__(self, value):
|
||
|
self.value = value
|
||
|
def __str__(self):
|
||
|
return repr(self.value)
|
||
|
|
||
|
def isMounted(mountPoint):
|
||
|
if os.path.ismount(mountPoint):
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
def run_command(cmd):
|
||
|
"""
|
||
|
Function: run_command
|
||
|
Arguments: cmd - string to be run as a command
|
||
|
Description: runs the command then returns out and err
|
||
|
"""
|
||
|
import subprocess
|
||
|
|
||
|
p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
|
||
|
(out,err) = p.communicate()
|
||
|
return (out,err)
|
||
|
|
||
|
|
||
|
def isRhel():
|
||
|
myDistro = platform.linux_distribution()
|
||
|
if "Red Hat Enterprise Linux Server" or "CentOS" in myDistro:
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
def isSles():
|
||
|
myDistro = platform.linux_distribution()
|
||
|
if "SUSE Linux Enterprise Server" in myDistro:
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
def isUbuntu():
|
||
|
myDistro = platform.linux_distribution()
|
||
|
if "Ubuntu" in myDistro:
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
|
||
|
def getUserInput(question):
|
||
|
response = raw_input("%s: " %(question))
|
||
|
return response
|
||
|
|
||
|
def filterInstalledPackages(pkglist=[]):
|
||
|
fulllist = ""
|
||
|
|
||
|
if isRhel():
|
||
|
# using YUM
|
||
|
import yum
|
||
|
yb = yum.YumBase()
|
||
|
|
||
|
for x in pkglist:
|
||
|
if not yb.rpmdb.searchNevra(name='%s' %(x)):
|
||
|
fulllist += "%s " %(x)
|
||
|
|
||
|
return fulllist
|
||
|
|
||
|
def installPackages(pkglist=[]):
|
||
|
fulllist = filterInstalledPackages(pkglist)
|
||
|
|
||
|
if isRhel():
|
||
|
if fulllist.strip() != "":
|
||
|
cmd = "yum -y install %s" %(fulllist)
|
||
|
out,err = xcatutils.run_command(cmd)
|
||
|
|
||
|
elif isSles():
|
||
|
print "Using zyppr..."
|
||
|
elif isUbuntu():
|
||
|
print "Using apt-get..."
|
||
|
else:
|
||
|
print "Error!"
|
||
|
|