Created
October 7, 2017 21:47
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.