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
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
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
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
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}
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}
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
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
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
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
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
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 }
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 }
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
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)
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
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
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]
def test_shell_out(self): path = os.path.join(TEST_DIR, 'test_exe.py') self.assertEquals("executed\n", shell_out(path))
def check(class_): try: return "Mac OS X" in shell_out("sw_vers") except Exception: return False
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]
def check(class_): try: return "Windows" in shell_out("ver") except Exception, e: return False
def check(class_): try: return "Mac OS X" in shell_out("sw_vers") except Exception, e: return False
def test_shell_out(self): self.assertEquals("executed\n", shell_out('echo executed'))