Esempio n. 1
0
 def is_root(self):
     if "S-1-16-12288" in shell_out("whoami /groups"):
         return True
     else:
         admins = shell_out("net localgroup administrators")
         username = shell_out("echo %USERNAME%")
         return username.strip() in admins
Esempio n. 2
0
 def is_root(self):
     if "S-1-16-12288" in shell_out("whoami /groups"):
         return True
     else:
         admins = shell_out("net localgroup administrators")
         username = shell_out("echo %USERNAME%")
         return username.strip() in admins
Esempio n. 3
0
    def _generate_pkg_list(self):
        """Generates a dictionary of packages for internal use by the package
        manager in the format::

            {'package_name': {'name': 'package_name',
                              'version': 'major.minor.version'}}

        """
        if self.query_command:
            cmd = self.query_command
            pkg_list = shell_out(cmd, timeout=0,
                                 chroot=self.chroot).splitlines()

            for pkg in pkg_list:
                if '|' not in pkg:
                    continue
                elif pkg.count("|") == 1:
                    name, version = pkg.split("|")
                    release = None
                elif pkg.count("|") == 2:
                    name, version, release = pkg.split("|")
                self._packages[name] = {
                    'name': name,
                    'version': version.split(".")
                }
                release = release if release else None
                self._packages[name]['release'] = release
Esempio n. 4
0
    def get_pkg_list(self):
        """Returns a dictionary of packages in the following
        format::

            {'package_name': {'name': 'package_name',
                              'version': 'major.minor.version'}}

        """
        if self.query_command:
            cmd = self.query_command
            pkg_list = shell_out(
                cmd, timeout=0, chroot=self.chroot
            ).splitlines()

            for pkg in pkg_list:
                if '|' not in pkg:
                    continue
                elif pkg.count("|") == 1:
                    name, version = pkg.split("|")
                    release = None
                elif pkg.count("|") == 2:
                    name, version, release = pkg.split("|")
                self.packages[name] = {
                    'name': name,
                    'version': version.split(".")
                }
                release = release if release else None
                self.packages[name]['release'] = release

        return self.packages
Esempio n. 5
0
    def get_tmpdir_default(self):
        """If --tmp-dir is not specified, provide a default location.
        Normally this is /var/tmp, but if we detect we are in a container, then
        use a standardized env var to redirect to the host's filesystem instead
        """
        if self.opts.tmp_dir:
            tmpdir = os.path.abspath(self.opts.tmp_dir)
        else:
            tmpdir = os.getenv('TMPDIR', None) or '/var/tmp'

        if os.getenv('HOST', None) and os.getenv('container', None):
            tmpdir = os.path.join(os.getenv('HOST'), tmpdir.lstrip('/'))

        # no standard library method exists for this, so call out to stat to
        # avoid bringing in a dependency on psutil
        self.tmpfstype = shell_out("stat --file-system --format=%s %s" %
                                   ("%T", tmpdir)).strip()

        if self.tmpfstype == 'tmpfs':
            # can't log to the ui or sos.log yet since those require a defined
            # tmpdir to setup
            print("WARNING: tmp-dir is set to a tmpfs filesystem. This may "
                  "increase memory pressure and cause instability on low "
                  "memory systems, or when using --all-logs.")
            time.sleep(2)

        return tmpdir
Esempio n. 6
0
 def _get_deb_list(self):
     pkg_list = shell_out(
         ["dpkg-query", "-W", "-f=",
          "'${Package}|${Version}\\n' \*"]).splitlines()
     self._debs = {}
     for pkg in pkg_list:
         name, version = pkg.split("|")
         self._debs[name] = {'name': name, 'version': version}
Esempio n. 7
0
 def _get_rpm_list(self):
     pkg_list = shell_out(
         ["rpm", "-qa", "--queryformat",
          "%{NAME}|%{VERSION}\\n"]).splitlines()
     self._rpms = {}
     for pkg in pkg_list:
         name, version = pkg.split("|")
         self._rpms[name] = {'name': name, 'version': version}
Esempio n. 8
0
File: osx.py Progetto: xueweiz/sos
    def check(cls, remote=''):

        if remote:
            return cls.distro in remote

        try:
            return "Mac OS X" in shell_out("sw_vers")
        except Exception:
            return False
Esempio n. 9
0
 def load_all_services(self):
     svcs = shell_out(self.list_cmd).splitlines()[1:]
     for line in svcs:
         try:
             name = line.split('.service')[0]
             config = line.split()[1]
             self.services[name] = {'name': name, 'config': config}
         except IndexError:
             pass
Esempio n. 10
0
 def all_files(self):
     """
     Returns a list of files known by the package manager
     """
     if self.files_command and not self.files:
         cmd = self.files_command
         files = shell_out(cmd, timeout=0, chroot=self.chroot)
         self.files = files.splitlines()
     return self.files
Esempio n. 11
0
    def get_pkg_list(self):
        """
        returns a dictionary of packages in the following format:
        {'package_name': {'name': 'package_name', 'version': 'major.minor.version'}}
        """
        if self.query_command:
            pkg_list = shell_out(self.query_command).splitlines()
            for pkg in pkg_list:
                name, version = pkg.split("|")
                self.packages[name] = {"name": name, "version": version.split(".")}

        return self.packages
Esempio n. 12
0
 def load_all_services(self):
     svcs = shell_out(self.list_cmd).splitlines()
     for line in svcs:
         try:
             name = line.split('.service')[0]
             config = line.split()[1]
             self.services[name] = {
                 'name': name,
                 'config': config
             }
         except IndexError:
             pass
Esempio n. 13
0
 def _get_rpm_list(self):
     pkg_list = shell_out(["rpm",
         "-qa",
         "--queryformat",
         "%{NAME}|%{VERSION}\\n"]).splitlines()
     self._rpms = {}
     for pkg in pkg_list:
         name, version = pkg.split("|")
         self._rpms[name] = {
                 'name': name,
                 'version': version
                 }
Esempio n. 14
0
 def _get_deb_list(self):
     pkg_list = shell_out(["dpkg-query",
         "-W",
         "-f=",
     "'${Package}|${Version}\\n' \*"]).splitlines()
     self._debs = {}
     for pkg in pkg_list:
         name, version = pkg.split("|")
         self._debs[name] = {
                 'name': name,
                 'version': version
                 }
Esempio n. 15
0
    def get_pkg_list(self):
        """
        returns a dictionary of packages in the following format:
        {'package_name': {'name': 'package_name', 'version': 'major.minor.version'}}
        """
        if self.query_command:
            pkg_list = shell_out(self.query_command).splitlines()
            for pkg in pkg_list:
                name, version = pkg.split("|")
                self.packages[name] = {
                    'name': name,
                    'version': version.split(".")
                }

        return self.packages
Esempio n. 16
0
    def init_kernel_modules(self):
        """Obtain a list of loaded kernel modules to reference later for plugin
        enablement and SoSPredicate checks
        """
        self.kernel_mods = []
        release = os.uname().release

        # first load modules from lsmod
        lines = shell_out("lsmod", timeout=0, chroot=self.sysroot).splitlines()
        self.kernel_mods.extend([
            line.split()[0].strip() for line in lines[1:]
        ])

        # next, include kernel builtins
        builtins = self.join_sysroot(
            "/usr/lib/modules/%s/modules.builtin" % release
        )
        try:
            with open(builtins, "r") as mfile:
                for line in mfile:
                    kmod = line.split('/')[-1].split('.ko')[0]
                    self.kernel_mods.append(kmod)
        except IOError:
            pass

        # finally, parse kconfig looking for specific kconfig strings that
        # have been verified to not appear in either lsmod or modules.builtin
        # regardless of how they are built
        config_strings = {
            'devlink': 'CONFIG_NET_DEVLINK',
            'dm_mod': 'CONFIG_BLK_DEV_DM'
        }

        booted_config = self.join_sysroot("/boot/config-%s" % release)
        kconfigs = []
        try:
            with open(booted_config, "r") as kfile:
                for line in kfile:
                    if '=y' in line:
                        kconfigs.append(line.split('=y')[0])
        except IOError:
            pass

        for builtin in config_strings:
            if config_strings[builtin] in kconfigs:
                self.kernel_mods.append(builtin)
Esempio n. 17
0
    def get_pkg_list(self):
        """
        returns a dictionary of packages in the following format:
        {'package_name': {'name': 'package_name', '
                          version': 'major.minor.version'}}
        """
        if self.query_command:
            cmd = self.query_command
            pkg_list = shell_out(cmd, timeout=self.timeout,
                                 chroot=self.chroot).splitlines()

            for pkg in pkg_list:
                if '|' not in pkg:
                    continue
                name, version = pkg.split("|")
                self.packages[name] = {
                    'name': name,
                    'version': version.split(".")
                }

        return self.packages
Esempio n. 18
0
    def get_pkg_list(self):
        """
        returns a dictionary of packages in the following format:
        {'package_name': {'name': 'package_name', '
                          version': 'major.minor.version'}}
        """
        if self.query_command:
            cmd = self.query_command
            pkg_list = shell_out(
                cmd, timeout=self.timeout, chroot=self.chroot
            ).splitlines()

            for pkg in pkg_list:
                if '|' not in pkg:
                    continue
                name, version = pkg.split("|")
                self.packages[name] = {
                    'name': name,
                    'version': version.split(".")
                }

        return self.packages
Esempio n. 19
0
 def lsmod(self):
     """Return a list of kernel module names as strings.
     """
     lines = shell_out("lsmod", timeout=0).splitlines()
     return [line.split()[0].strip() for line in lines]
Esempio n. 20
0
 def test_shell_out(self):
     path = os.path.join(TEST_DIR, 'test_exe.py')
     self.assertEquals("executed\n", shell_out(path))
Esempio n. 21
0
 def check(class_):
     try:
         return "Mac OS X" in shell_out("sw_vers")
     except Exception:
         return False
Esempio n. 22
0
 def init_kernel_modules(self):
     """Obtain a list of loaded kernel modules to reference later for plugin
     enablement and SoSPredicate checks
     """
     lines = shell_out("lsmod", timeout=0).splitlines()
     self.kernel_mods = [line.split()[0].strip() for line in lines]
Esempio n. 23
0
 def check(class_):
     try:
         return "Windows" in shell_out("ver")
     except Exception, e:
         return False
Esempio n. 24
0
 def test_shell_out(self):
     path = os.path.join(TEST_DIR, 'test_exe.py')
     self.assertEquals("executed\n", shell_out(path))
Esempio n. 25
0
 def check(class_):
     try:
         return "Mac OS X" in shell_out("sw_vers")
     except Exception, e:
         return False
Esempio n. 26
0
 def test_shell_out(self):
     self.assertEquals("executed\n", shell_out('echo executed'))