HEX
Server: LiteSpeed
System: Linux pl-rocket-da1.hostsila.org 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: etorby24eu (1588)
PHP: 8.3.23
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //opt/node_api/backup.hook_shared.v2
#!/usr/bin/python3
import os
import json
from operator import itemgetter

def progress():
    try:
        with open("/root/backup.conf/tmp/dir.list", 'r') as lv:
            volume = lv.read().split()
            if volume:
                summ1 = len(volume)
                last = volume[-1]
            lv.close()

        back_file = "/root/backup.conf/logs/backup_time.tmp"
        with open(back_file, 'r') as bt:
            status = bt.read().strip().split()[-3]
            bt.close()

        if last != status:
            summ2 = sum(1 for line in open(back_file, 'r'))
            ss = int(summ2) * 100 // int(summ1)
            return ss
        else:
            return 100

    except Exception as e:
        pass

def top_dir():
    try:
        back_file = "/root/backup.conf/logs/backup_time.tmp"
        with open(back_file, 'r') as bt:
            status = bt.readlines()
            sort = []
            for l in status:
                sort.append(l.split()[2])
            s = []
            top3 = sorted(sort, reverse=True)[0:3]
            for i in status:
                if i.split()[-1] in top3:
                    s.append((i.split()[0], i.split()[-1]))
            slow = {}
            for x, y in sorted(s, key=itemgetter(1), reverse=True):
                slow[x] = y
            return slow
    except Exception as e:
        pass

def backup_size():
    stream = os.popen("mount | grep /backup | awk {'print$1'}")
    output = stream.readlines()
    if output:
        stream = os.popen('df -h | grep ' + output[0].rstrip() + ' | awk {\'print$5\'}')
        output = stream.readlines()
        return output[0].rstrip()

def backup():
    with open('/backup/backup.stat', 'r') as s:
        output = s.readlines()[-1]
        last_day = output[-3:].split()[0]

        pr = progress()
        if pr and pr >= 90:
            result = [last_day, backup_size(), pr, top_dir()]
        else:
            result = [last_day, backup_size(), pr, {}]

        print(json.dumps(result, indent=4))

if __name__=="__main__":
    backup()