cockpit-navigator/navigator/scripts/ls.py

55 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
import os
from stat import S_ISDIR, filemode
import json
import sys
from pwd import getpwuid
from grp import getgrgid
def get_stat(full_path, filename = '/'):
stats = os.lstat(full_path)
isdir = False
try:
isdir = S_ISDIR(os.stat(full_path).st_mode)
except OSError:
pass
response = {
"filename": filename,
"isdir": isdir,
"stat": {
"mode": stats.st_mode,
"mode-str": filemode(stats.st_mode),
"uid": stats.st_uid,
"owner": getpwuid(stats.st_uid).pw_name,
"gid": stats.st_gid,
"group": getgrgid(stats.st_gid).gr_name,
"size": stats.st_size,
"atime": stats.st_atime,
"mtime": stats.st_mtime,
"ctime": stats.st_ctime
}
}
return response
def main():
if(len(sys.argv) < 2):
sys.exit(1)
try:
nodes = os.listdir(sys.argv[1])
except:
print("No such file or directory")
sys.exit(1)
response = {
".": get_stat(sys.argv[1]),
"children": []
}
for node in nodes:
full_path = sys.argv[1] + "/" + node
response["children"].append(get_stat(full_path, node))
print(json.dumps(response))
if __name__ == "__main__":
main()