Func/Rpms Module - Function Verify

From Open Source@Seneca

Jump to: navigation, search

Contents

Project Name

Func Rpm Module Verification Method - Current Version 1.0 RC1.

Project Description

Create a method inside the Func rpms module to verify the rpms of the system.

This method will generate the same output of the command

#rpm -V -a 

It will allow a system administrator to execute the command in a main server and verify all the servers at once.

Project Leader

Milton Paiva

Project Contributors

Project Details

The rpms module is in the file: /usr/lib/python2.5/site-packages/func/minion/modules/rpms.py

I added the method verify

# Copyright 2007, Red Hat, Inc                           
# Michael DeHaan <mdehaan@redhat.com>                    
# Copyright 2009
# Milton Paiva Neto <milton.paiva@gmail.com> 
#                                                        
# This software may be freely redistributed under the terms of the GNU
# general public license.                                             
#                                                                     
# You should have received a copy of the GNU General Public License   
# along with this program; if not, write to the Free Software         
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.           
import func_module
import rpm
class RpmModule(func_module.FuncModule):
   version = "0.0.2"
   api_version = "0.0.1"
   description = "RPM related commands."
   def inventory(self, flatten=True):
       """                           
       Returns information on all installed packages.
       By default, 'flatten' is passed in as True, which makes printouts very
       clean in diffs for use by func-inventory.  If you are writting another
       software application, using flatten=False will prevent the need to    
       parse the returns.                                                    
       """                                                                   
       # I have not been able to get flatten=False to work if there          
       # is more than 491 entries in the dict -- ashcrow                     
       import rpm
       ts = rpm.TransactionSet()                                             
       mi = ts.dbMatch()                                                     
       results = []                                                          
       for hdr in mi:                                                        
           name = hdr['name']                                                
           epoch = (hdr['epoch'] or 0)                                       
           version = hdr['version']                                          
           release = hdr['release']                                          
           arch = hdr['arch']                                                
           if flatten:                                                       
               results.append("%s %s %s %s %s" % (name, epoch, version,      
                                                  release, arch))            
           else:                                                             
               results.append([name, epoch, version, release, arch])         
       return results                                                        
'    def verify(self, pattern=, flatten=True):
        """
        Returns information on the verified package(s).
        """        
        import rpm
        import yum
        from re import split
        ts = rpm.TransactionSet() 
'        mi = (ts.dbMatch() if pattern ==  else self.glob(pattern))
        results = []
        for hdr in mi:
'            name = hdr['name'] if pattern ==  else split("\s",hdr)[0]
            if flatten:                
                yb = yum.YumBase()
                pkgs = yb.rpmdb.searchNevra(name)
                for pkg in pkgs: 
                    errors = pkg.verify()
                    for fn in errors.keys():
                        for prob in errors[fn]:
                            results.append('%s %s %s' % (name, fn, prob.message))
            else:
                results.append("%s-%s-%s.%s" % (name, version, release, arch))
        return results
   def glob(self, pattern, flatten=True):
       """                               
       Return a list of installed packages that match a pattern
       """                                                     
       import rpm
       ts = rpm.TransactionSet()                               
       mi = ts.dbMatch()                                       
       results = []                                            
       if not mi:                                              
           return                                              
       mi.pattern('name', rpm.RPMMIRE_GLOB, pattern)           
       for hdr in mi:                                          
           name = hdr['name']                                  
           epoch = (hdr['epoch'] or 0)                         
           version = hdr['version']                            
           release = hdr['release']                            
           # gpg-pubkeys have no arch                          
           arch = (hdr['arch'] or "")                          
           if flatten:
               results.append("%s %s %s %s %s" % (name, epoch, version,
                                                      release, arch))  
           else:                                                       
               results.append([name, epoch, version, release, arch])
       return results
   def register_method_args(self):
       """
       Implementing the method argument getter
       """
       return {
               'inventory':{
                   'args':{
                       'flatten':{
                           'type':'boolean',
                           'optional':True,
                           'default':True,
                           'description':"Print clean in difss"
                           }
                       },
                   'description':"Returns information on all installed packages"
                   },
                'verify':{
                    'args':{
                        'flatten':{
                            'type':'boolean',
                            'optional':True,
                            'default':True,
                            'description':"Print clean in difss"
                            }
                        },
                    'description':"Returns information on the verified package(s)"
                   },
               'glob':{
                   'args':{
                       'pattern':{
                           'type':'string',
                           'optional':False,
                           'description':"The glob packet pattern"
                           },
                       'flatten':{
                           'type':'boolean',
                           'optional':True,
                           'default':True,
                           'description':"Print clean in difss"
                               }
                       },
                   'description':"Return a list of installed packages that match a pattern"
                   }
               }

The code for the release 0.9 is also available in the following addresses:

[1]http://matrix.senecac.on.ca/~mpaivaneto/rpms.py

[2]http://func.pastebin.com/f75c77458

The new module was already sent to the func maillist.

How to use

  • The method verify can be used to query all the rpms on the system with the following command:
#func minion.ca call rpms verify
  • The method can also has query for only one package each time, it is integrated with the existing glob method from the func rpm module.
#func minion.ca call rpms verify package_name

For example:

#func minion.ca call rpms verify shadown-utils


In big queries, slow networks or slow computers you could need to make an asynchronous call. This kind of call will allow you to keep the connection while the results are been processed.

 #func minion.ca call -a rpms verify

Current Issues

  • 0.4 - The python rpm module is not complete enough for the method I am working on. Because of that it was necessary to use external commands in a subprocess, by suggestion taken in the Func maillist. - PENDING

Solution: Look for an internal funcion.

  • 0.5 - It was necessary to make a pipe to get the output from the subprocess - SOLVED

Solution: Use the yum python api.

  • 0.8 - Integrate the RPM Module with the Yum Module

Solution: Create a new module and merge the already existing modules.

  • 0.9 - Polish the code and add integration to glob for the verification method
  • 1.0 - Prepare the final presentation for the project

Ideas

0.5

  • Look at glob to be able to query only one package

Text from the email:

>>

In this particular implementation, there isn't really any difference between the code above and just shelling out to `rpm -Va`. That said, if you add the glob support, your approach is better.

  • Check for the python rpm api again, to try to find some build in function for verification.

>>

Not sure yet, but I think you may be losing data here in cases where multiple versions of the same package is installed (say, a kernel, or just about any package on a x86_64 machine with i386 packages installed). May be better to key the dict on something more unique (name-version-release.arch, for example)

I'd also check to see if the rpm python api supports package verification directly now. I know it didn't for a long time, but it may now. Though, it may not be very backwards compatible.

0.6

For this release a good approach is to using the yum python api, make a query on the rpm database to check the files

yb = yum.YumBase()
pkgs = yb.rpmdb.searchNevra(name='shadow-utils')
for pkg in pkgs:
    errors = pkg.verify()
    for fn in errors.keys():
        for prob in errors[fn]:
            print '%s - %s' % (fn, prob.message)
Reference:
[3]http://yum.baseurl.org/wiki/YumCodeSnippet/VerifyPkg

The output from the yum command is little different from the one I got using the rpm -V -a

/usr/sbin/userdel - checksum does not match
/usr/sbin/userdel - size does not match
/usr/sbin/groupdel - checksum does not match
/usr/sbin/groupdel - size does not match
/etc/login.defs - mtime does not match
/etc/login.defs - checksum does not match
/etc/login.defs - size does not match
/usr/bin/newgrp - checksum does not match
/usr/bin/newgrp - size does not match
/usr/sbin/groupadd - checksum does not match
/usr/sbin/groupadd - size does not match
/usr/bin/chage - checksum does not match
/usr/bin/chage - size does not match
/usr/bin/gpasswd - checksum does not match
/usr/bin/gpasswd - size does not match
/usr/sbin/useradd - checksum does not match
/usr/sbin/useradd - size does not match
/usr/sbin/usermod - checksum does not match
/usr/sbin/usermod - size does not match
/usr/sbin/groupmod - checksum does not match
/usr/sbin/groupmod - size does not match

Output from the command rpm -V shadow-utils

S.5....T  c /etc/login.defs
prelink: /usr/bin/chage: at least one of file's dependencies has changed since prelinking
S.?.....    /usr/bin/chage
prelink: /usr/bin/gpasswd: at least one of file's dependencies has changed since prelinking
S.?.....    /usr/bin/gpasswd
prelink: /usr/bin/newgrp: at least one of file's dependencies has changed since prelinking
S.?.....    /usr/bin/newgrp
prelink: /usr/sbin/groupadd: at least one of file's dependencies has changed since prelinking
S.?.....    /usr/sbin/groupadd
prelink: /usr/sbin/groupdel: at least one of file's dependencies has changed since prelinking
S.?.....    /usr/sbin/groupdel
prelink: /usr/sbin/groupmod: at least one of file's dependencies has changed since prelinking
S.?.....    /usr/sbin/groupmod
prelink: /usr/sbin/useradd: at least one of file's dependencies has changed since prelinking
S.?.....    /usr/sbin/useradd
prelink: /usr/sbin/userdel: at least one of file's dependencies has changed since prelinking
S.?.....    /usr/sbin/userdel
prelink: /usr/sbin/usermod: at least one of file's dependencies has changed since prelinking
S.?.....    /usr/sbin/usermod

Output from the verify method

func1.funcland.com# func func3 call rpms verify
{'func3': ['shadow-utils : /usr/share/man/ko/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/tl/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/it/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/he/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/pwck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man1/sg.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/faillog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man5/gshadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/pwck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/lastlog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/pwconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/id/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/grpck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man5/login.defs.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/grpconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/groupmems.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man3/getspnam.3.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/pwunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/newusers.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/tr/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/sk/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man1/chage.1.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/es/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/chpasswd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/tr/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/grpconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/da/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/grpconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/pwconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man3/shadow.3.gz : mtime does not match',
          'shadow-utils : /usr/sbin/pwck : mtime does not match',
          'shadow-utils : /usr/sbin/pwck : checksum does not match',
          'shadow-utils : /usr/share/man/ru/man5/faillog.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/sbin/userdel : mtime does not match',
          'shadow-utils : /usr/sbin/userdel : checksum does not match',
          'shadow-utils : /usr/sbin/groupdel : mtime does not match',
          'shadow-utils : /usr/sbin/groupdel : checksum does not match',
          'shadow-utils : /usr/share/man/ru/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/it/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/grpunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/gl/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/pwunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/grpck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/es/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man5/gshadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man5/login.defs.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/id/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/sbin/groupmems : mtime does not match',
          'shadow-utils : /usr/sbin/groupmems : checksum does not match',
          'shadow-utils : /usr/share/man/pt_BR/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/bin/newgrp : mtime does not match',
          'shadow-utils : /usr/bin/newgrp : checksum does not match',
          'shadow-utils : /usr/share/man/ru/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ko/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/grpunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/newusers.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/ko/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/sbin/groupadd : mtime does not match',
          'shadow-utils : /usr/sbin/groupadd : checksum does not match',
          'shadow-utils : /usr/share/man/pl/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man3/shadow.3.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/es/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man1/chage.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man3/shadow.3.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man1/sg.1.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/sv/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/it/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man1/sg.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man5/faillog.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_CN/man8/chpasswd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/faillog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man5/faillog.5.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/zh_CN/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/newusers.8.gz : mtime does not match',
          'shadow-utils : /usr/sbin/newusers : mtime does not match',
          'shadow-utils : /usr/sbin/newusers : checksum does not match',
          'shadow-utils : /usr/bin/chage : mtime does not match',
          'shadow-utils : /usr/bin/chage : checksum does not match',
          'shadow-utils : /usr/sbin/grpck : mtime does not match',
          'shadow-utils : /usr/sbin/grpck : checksum does not match',
          'shadow-utils : /usr/share/man/ru/man8/faillog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man8/lastlog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/ro/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/pwunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/faillog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/el/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/locale/eu/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/pwconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man1/chage.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_TW/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/pwunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/pt/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/pwck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/pwunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man1/sg.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/nn/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/zh_TW/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/newusers.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/hu/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/grpck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/grpunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/pwck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/chpasswd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/de/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pt_BR/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/chpasswd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/de/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/fi/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man5/login.defs.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/grpunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_CN/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man1/sg.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man3/getspnam.3.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man8/grpck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/tr/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/grpconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/grpconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/pl/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/sq/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/grpck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_CN/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/id/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man1/chage.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/pwconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/faillog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/uk/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/pwconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/faillog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/lastlog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/tr/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_TW/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/chpasswd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/grpunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man1/chage.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/faillog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/lastlog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man5/login.defs.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_CN/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/grpunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man5/login.defs.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pt_BR/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/sbin/groupmod : mtime does not match',
          'shadow-utils : /usr/sbin/groupmod : checksum does not match',
          'shadow-utils : /usr/sbin/vipw : mtime does not match',
          'shadow-utils : /usr/sbin/vipw : checksum does not match',
          'shadow-utils : /usr/share/man/ru/man8/chpasswd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/pt_BR/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/chpasswd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/hu/man8/lastlog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/usermod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/bs/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/grpconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/hu/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/grpunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_TW/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man5/gshadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /usr/bin/faillog : mtime does not match',
          'shadow-utils : /usr/bin/faillog : checksum does not match',
          'shadow-utils : /usr/share/man/pl/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/groupmems.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man3/getspnam.3.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/lastlog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man1/chage.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man5/faillog.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/lastlog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/hu/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/lastlog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_TW/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/sbin/grpconv : mtime does not match',
          'shadow-utils : /usr/sbin/grpconv : checksum does not match',
          'shadow-utils : /usr/share/man/zh_TW/man8/chpasswd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/es/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/de/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man1/chage.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man5/gshadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/tr/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_CN/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/pwunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man5/faillog.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/grpck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pt_BR/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man1/sg.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man3/shadow.3.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/nb/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/sbin/pwconv : mtime does not match',
          'shadow-utils : /usr/sbin/pwconv : checksum does not match',
          'shadow-utils : /usr/share/man/man8/pwunconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/zh_TW/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/groupmems.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/pwck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/ca/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/it/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/sbin/usermod : mtime does not match',
          'shadow-utils : /usr/sbin/usermod : checksum does not match',
          'shadow-utils : /etc/login.defs : mtime does not match',
          'shadow-utils : /etc/login.defs : checksum does not match',
          'shadow-utils : /etc/login.defs : size does not match',
          'shadow-utils : /usr/share/man/sv/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man5/login.defs.5.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/ne/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/newusers.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/pwconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/dz/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man5/faillog.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pt_BR/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_CN/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man8/faillog.8.gz : mtime does not match',
          'shadow-utils : /usr/sbin/chpasswd : mtime does not match',
          'shadow-utils : /usr/sbin/chpasswd : checksum does not match',
          'shadow-utils : /usr/share/man/fr/man1/sg.1.gz : mtime does not match',
          'shadow-utils : /usr/bin/gpasswd : mtime does not match',
          'shadow-utils : /usr/bin/gpasswd : checksum does not match',
          'shadow-utils : /usr/sbin/useradd : mtime does not match',
          'shadow-utils : /usr/sbin/useradd : checksum does not match',
          'shadow-utils : /usr/share/man/pl/man8/pwconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_TW/man8/groupdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/groupmems.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/tr/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_CN/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/ja/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/grpck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/newusers.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man5/faillog.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/groupadd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_CN/man8/userdel.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/man8/chpasswd.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/tr/man1/chage.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/sbin/grpunconv : mtime does not match',
          'shadow-utils : /usr/sbin/grpunconv : checksum does not match',
          'shadow-utils : /usr/share/locale/fr/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man5/gshadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/vi/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man3/getspnam.3.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_TW/man8/adduser.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/hu/man1/sg.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/grpck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man5/faillog.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/pl/man8/vigr.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/cs/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/tr/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man5/shadow.5.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_TW/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/cs/man1/gpasswd.1.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/tr/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man3/getspnam.3.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/km/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/locale/ru/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/it/man3/shadow.3.gz : mtime does not match',
          'shadow-utils : /usr/share/man/sv/man8/pwck.8.gz : mtime does not match',
          'shadow-utils : /usr/sbin/pwunconv : mtime does not match',
          'shadow-utils : /usr/sbin/pwunconv : checksum does not match',
          'shadow-utils : /usr/share/man/tr/man8/groupmod.8.gz : mtime does not match',
          'shadow-utils : /usr/share/locale/nl/LC_MESSAGES/shadow.mo : mtime does not match',
          'shadow-utils : /usr/share/man/de/man1/newgrp.1.gz : mtime does not match',
          'shadow-utils : /usr/bin/lastlog : mtime does not match',
          'shadow-utils : /usr/bin/lastlog : checksum does not match',
          'shadow-utils : /usr/share/man/it/man8/newusers.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ja/man8/pwck.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/ru/man8/grpconv.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/it/man8/vipw.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/fr/man8/lastlog.8.gz : mtime does not match',
          'shadow-utils : /usr/share/man/zh_CN/man8/useradd.8.gz : mtime does not match',
          'shadow-utils : /etc/login.defs : mtime does not match',
          'shadow-utils : /etc/login.defs : checksum does not match',
          'shadow-utils : /etc/login.defs : size does not match']}

To do List

  • Test the method in one computer
  • Test the method in more than 2 computers or virtual machines
  • Send a email for the Func community with the new code.
  • Check the yum approach.
  • Mege RPM Module with Yum Module
  • Check the glob approach.
  • Allow verification for only one package querying thought the glob method.
  • Polish the code
  • Prepare the final presentation for 1.0 :-)
Personal tools
special sections