[ SEA-GHOST MINI SHELL]
#!/usr/bin/env python2.7
import commands
import pwd
import os
ps = commands.getoutput('ps ax| grep rsync')
def get_pwuid(uid):
try:
return pwd.getpwuid(uid)[0]
except:
return "User with id %d not found" % uid
def get_mountpoints():
"""Return the list of system mount points"""
mount = commands.getoutput('df -Ph')
mntlines = mount.split('\n')[1::] # [1::] trims the first line (column names)
return map(lambda line: line.split()[5], mntlines)
def get_subdirectories(a_dir):
"""Return all subdirectores of given directory (excluding symbolic links)."""
return (name for name in os.listdir(a_dir)
if os.path.isdir(os.path.join(a_dir, name)) and
not os.path.islink(os.path.join(a_dir, name)))
def get_multihomes():
"""Return the directory of usernames which have multiple home dirs"""
users = []
for mount in get_mountpoints():
if '/home' in mount:
homes = get_subdirectories(mount)
for home in homes:
ps_number = ps.count(home)
if ps_number < 1:
stat = os.stat(os.path.join(mount, home))
users.append(stat.st_uid)
count = dict((i, users.count(i)) for i in users)
return dict((get_pwuid(k), v) for k, v in count.items()
if v > 1 and get_pwuid(k) != 'root')
if __name__ == "__main__":
output = get_multihomes()
print ', '.join('%s: %d' % (k,v) for k,v in sorted(output.iteritems()))
SEA-GHOST - SHELL CODING BY SEA-GHOST