Skip to content

Instantly share code, notes, and snippets.

@oldkingcone
Created October 7, 2017 21:47
Show Gist options
  • Save oldkingcone/d4d742a5d199b381d57d9d8da3c97d79 to your computer and use it in GitHub Desktop.
Save oldkingcone/d4d742a5d199b381d57d9d8da3c97d79 to your computer and use it in GitHub Desktop.
Traverse Directories, has no remote storage capability EG exporting to remote server. Saves found data inside a CSV file. Get an error on get_tree_size function.
import os
import sys
import grp
import pwd
from datetime import datetime as dt
os.system('clear')
os.chdir('/home')
os.system('pwd')
path2 = ['/', '/home/*', '/bin', '/usr', '/var', '/tmp', '/lib', '/lib64', '/etc', '/sys', '/dev', '/media', '/mnt', '/srv', '/sbin', '/etc']
path1 = ['/', '/home/*', '/bin', '/usr', '/var', '/tmp', '/lib', '/lib64', '/etc', '/sys', '/dev', '/media', '/mnt', '/srv', '/sbin', '/etc']
def get_tree_size(path):
total = 0
outfile2=open('/home/tree_size.csv', 'wt')
for entry in os.scandir(path):
try:
ent = entry.is_dir(follow_symlinks=True)
total += entry.stat(entry.path)
c = ','
fina = ["[+]", total, '[+]', '\n']
outfile2.write("".join(fina))
outfile2.close()
except OSError as error:
print('Error Calling is_dir():', error, file=sys.stderr)
'''outfile2.close'''
continue
else:
try:
total2 = entry.stat(follow_symlinks=False).st_size
fin = str(total2)
outfile2.write("".join(fin))
'''outfile2.close()'''
except OSError as error:
print('Error calling stat():', error, file=sys.stderr)
'''outfile2.close()'''
return get_tree_size(path)
def accurate_scan(pathed):
for item in pathed:
for root, dirs, files in os.walk(item):
for fn in files:
path = os.path.join(root, fn)
try:
'''print(get_tree_size(path1))'''
stats = os.lstat(path)
'''size = str(stats.st_size)'''
user = pwd.getpwuid(stats.st_uid)[0]
group = grp.getgrgid(stats.st_gid)[0]
laccess = dt.fromtimestamp(stats.st_atime).strftime("%Y-%m-%d,%H:%M:%S")
lmod = dt.fromtimestamp(stats.st_atime).strftime("%Y-%m-%d,%H:%M:%S")
c = ','
t1 = ["[+]", path, c, user, c, group, c, laccess, c, lmod, "\n\n"]
outfile = open("/home/dirtree2.csv", "wt")
outfile.write("".join(t1))
outfile.close()
except OSError as error:
return accurate_scan
accurate_scan(path1)
for item in path2:
get_tree_size(path2)
@oldkingcone
Copy link
Author

Need to figure out implementation for get_tree_size function. Accurate scan works perfectly. Saves all found data locally, Going to try to bring in remote exportation of tree data.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment