#!/usr/bin/env python3

import os
import sys


def addNis ( stem ):
    nisEntries = []
    nisLogins  = set()
    sysFile    = '/etc/%s'     % stem
    tmpFile    = '/etc/%s.tmp' % stem
    nisFile    = '/etc/%s.nis' % stem
    fdSys      = open( sysFile )
    fdSysTmp   = open( tmpFile, 'w' )

    if os.path.isfile( nisFile ):
        print( 'Loading NIS entries ({}).'.format(nisFile) )
        fdSysNis = open( nisFile )
        for entry in fdSysNis.readlines():
            login = entry.split( ':' )[0]
            nisEntries.append( entry )
            if entry[0] == '+':
                print( entry[:-1] )
                continue
            if len(login):
                nisLogins.add( login )
        fdSysNis.close()
    
    print( 'Loading regular entries ({}).'.format(sysFile) )
    for entry in fdSys.readlines():
        if entry[0] != '+':
            login = entry.split(':')[0]
            if len(login) and login in nisLogins:
                continue
            print( entry[:-1] )
            fdSysTmp.write( entry )
    for entry in nisEntries:
        fdSysTmp.write( entry )
    fdSysTmp.close()
    fdSys.close()
  
    if stem == 'shadow': os.chmod( tmpFile, 0 )
    os.rename( tmpFile, sysFile )
  
    return
    

if __name__ == '__main__':

   addNis( 'passwd' )
   addNis( 'shadow' )
   sys.exit( 0 )
