Server IP : 184.107.3.203 / Your IP : 216.73.216.51 Web Server : Apache System : Linux dedicated2.avenfashion.com.ph 4.18.0-553.40.1.el8_10.x86_64 #1 SMP Mon Feb 10 12:11:18 EST 2025 x86_64 User : adminteladeoro ( 1015) PHP Version : 8.2.28 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /usr/lib/python3.6/site-packages/sos/report/plugins/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
# This file is part of the sos project: https://github.com/sosreport/sos # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions of # version 2 of the GNU General Public License. # # See the LICENSE file in the source distribution for further information. import pwd from sos.report.plugins import Plugin, IndependentPlugin, PluginOpt class Cups(Plugin, IndependentPlugin): short_desc = 'CUPS IPP print service' plugin_name = 'cups' profiles = ('hardware',) services = ('cups', 'cups-browsed', 'lprint', 'legacy-printer-app') packages = ('cups',) option_list = [ PluginOpt('userconfs', default=False, desc=('Changes whether plugin will ' 'collect user .cups configs')) ] def setup(self): if not self.get_option("all_logs"): self.add_copy_spec("/var/log/cups/access_log") self.add_copy_spec("/var/log/cups/error_log") self.add_copy_spec("/var/log/cups/page_log") self.add_copy_spec("/var/log/ipp-usb/main.log") else: self.add_copy_spec("/var/log/cups") self.add_copy_spec("/var/log/ipp-usb") self.add_copy_spec([ "/etc/cups/*.conf", "/etc/cups/*.types", "/etc/cups/lpoptions", "/etc/cups/ppd/*.ppd", "/etc/ipp-usb/", "/etc/lprint.conf", "/etc/legacy-printer-app.conf", "/var/lib/lprint.state", "/var/lib/legacy-printer-app.state", ]) self.add_cmd_output([ "lpstat -t", "lpstat -s", "lpstat -d" ]) if self.get_option('userconfs'): self.get_user_configs() def get_user_configs(self): """ Iterate over .cups folders in user homes to capture config files. """ users_data = pwd.getpwall() config_files = [ "client.conf", "lpoptions", ] fs_mount_info = {} try: with open('/proc/mounts', "r", encoding='UTF-8') as mounts_file: for line in mounts_file: (fs_file, fs_vstype) = line.split()[1:3] fs_mount_info[fs_file] = fs_vstype except Exception: self._log_error("Couldn't read /proc/mounts") return non_local_fs = {'nfs', 'nfs4', 'autofs'} # Read the home paths of users in the system and # config files from .cups for user in users_data: if user.pw_dir in fs_mount_info and \ fs_mount_info[user.pw_dir] in non_local_fs: self._log_info( f"Skipping capture in {user.pw_dir}" " because it's a remote directory" ) continue home_dir = self.path_join(user.pw_dir, '.cups') self.add_copy_spec( [f"{home_dir}/{config_file}" for config_file in config_files] ) # vim: set et ts=4 sw=4 :