diff options
Diffstat (limited to 'extras')
-rwxr-xr-x | extras/sos-open | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/extras/sos-open b/extras/sos-open deleted file mode 100755 index ffc9f051..00000000 --- a/extras/sos-open +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/python - -import os, commands, getopt, sys, tarfile - -# FILES NEEDED BY CHECKSYSREPORT: /etc/redhat-release /etc/sysconfig/rhn/up2date rpm-Va installed-rpms uname lsmod - -CONFIG = {} -report_dirs = [] - -CONFIG["outdir"] = "/tmp/sysreports" -CONFIG["extract_reports"] = [] -CONFIG["spawn_terminal"] = False -if not sys.stdin.isatty(): CONFIG["spawn_terminal"] = True -else: CONFIG["spawn_terminal"] = False - -def cat(fname): - try: - fp = open(fname,"r") - print fp.read() - fp.close() - except: pass - -try: - opts, args = getopt.getopt(sys.argv[1:], "hi:w:vxf", ["help", "input="]) -except getopt.GetoptError: - # print help information and exit: - usage() - sys.exit(2) - -for o, a in opts: - if o == "-v": - verbose = True - if o == "-f": - CONFIG["spawn_terminal"] = False - if o == "-x": - CONFIG["spawn_terminal"] = True - sys.argv[sys.argv.index("-x")] = "-f" - if o in ("-h", "--help"): - usage() - sys.exit() - if o in ("-d"): - CONFIG["outdir"] = a - if o in ("-w"): - a = os.path.abspath(a) - try: os.stat(a) - except: print "ERROR: could not open", a - else: report_dirs.append(a) - - if o in ("-i"): - a = os.path.abspath(a) - try: os.stat(a) - except: print "ERROR: could not open", a - -if CONFIG["spawn_terminal"]: - print "spawning new terminal" - sys.argv[0] = os.path.abspath(sys.argv[0]) - os.system("gnome-terminal -e '%s'" % (' '.join(sys.argv))) - sys.exit() - -CONFIG["extract_reports"] = [os.path.abspath(a) for a in args] - -if not os.path.isdir(CONFIG["outdir"]): - if not os.path.exists(CONFIG["outdir"]): - exit("ERROR: working directory path exists but it's not a directory") - else: - try: os.mkdir(CONFIG["outdir"]) - except: exit("ERROR: could not create working directory") - -try: os.chdir(CONFIG["outdir"]) -except: exit("ERROR: could not chdir into working directory, please check permissions") - -for report in CONFIG["extract_reports"]: - report_ext = report.rsplit(".",1)[-1] - - if report_ext == "gpg": - clear_fname = os.path.join(CONFIG["outdir"],os.path.basename(report.rsplit(".",1)[0])) - status, output = commands.getstatusoutput("gpg --output %s %s" % (clear_fname,report)) - if status: - sys.exit("ERROR: could not decrypt using gpg" + output ) - report = clear_fname - report_ext = clear_fname.rsplit(".",1)[-1] - del clear_fname - - outdir = None - tar = tarfile.open(report, "r") - for tarinfo in tar: - if tarinfo.isdir(): outdir = tarinfo.name ; break - tar.close() - - if not outdir: - print("INFO: archive doesn't appear to be either a sysreport or sosreport") - cddir = os.path.basename(report) - for sout in [ ".tar.gz", ".tgz", ".tar.bz2" ]: - if cddir.endswith(sout): cddir = cddir[:-len(sout)] - cddir = os.path.abspath(os.path.join(CONFIG["outdir"],"extract_" + cddir)) - outdir = cddir - else: - cddir = CONFIG["outdir"] - outdir = os.path.abspath(os.path.join(CONFIG["outdir"], outdir)) - - extract = True - if os.path.isdir(outdir): - extract = False - yorno = False - print "This report already seems to have been extracted in:" - print " " + outdir - print - while yorno not in ['y','n']: yorno = raw_input("Do you want to replace it with a fresh copy ? (y/n) ").lower() - if yorno == 'y': - print "Deleting previous copy..." - os.system("chmod -R u+rw %s" % outdir) - os.system("rm -rf %s" % outdir) - extract = True - - if extract: - print "Extracting..." - if not os.path.isdir(cddir): - os.mkdir(cddir) - if report_ext == "bz2": - status, output = commands.getstatusoutput("tar xCfj %s %s" % (cddir,report)) - elif report_ext == "gz" or report_ext == "tgz" : - status, output = commands.getstatusoutput("tar xCfz %s %s" % (cddir,report)) - - if status: - print("ERROR: there was some problem extracting the report (%s)" % report) - - report_dirs.append(os.path.abspath(outdir)) - -if len(report_dirs) == 1 and os.path.isdir(report_dirs[0]): - os.chdir(report_dirs[0]) - - if os.path.isfile("sos_reports/diagnose.txt"): - print - print "Diagnostics messages available:" - print - fp = open("sos_reports/diagnose.txt","r") - for line in fp.readlines(): - print " " + line.strip("\n") - fp.close() - print - - report_dirs[0] - - print - print "The extracted report is located in: " - print " " + report_dirs[0] - print "Once finished, press exit to return." - print - cat("uname") - os.system("PS1='[SoS \W]\$ ' HOME='%s' /bin/bash -l" % (report_dirs[0]) ) - sys.exit(-1) |