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: //proc/self/root/opt/node_api/virsh_info.hook
#!/usr/bin/python
import os
import re
import json

vm_vnc_port_start=5900

def F_vm_list():
	data = os.popen("virsh list | awk '{if ($1 ~ /^[0-9]+$/) print $2 }'").read()
	vm_list = data.splitlines()
	return vm_list

def F_vm_info(name):
	data = os.popen("virsh dominfo " + name).read()
	vm_info = data.splitlines()
	return vm_info

def F_vm_vnc_port(name):
        data = os.popen("virsh vncdisplay " + name).read()
	data = data.strip()
	data = data.replace(':', '')
        return int(data) + vm_vnc_port_start

def F_hostname():
	hostname = os.popen("hostname").read()
	return hostname.strip()

def main():
	 data={}
	 data['server'] = F_hostname()
	 vm_list = F_vm_list()
	 for vm in vm_list:
		data[vm]={}
		lines = F_vm_info(vm)
		for line in lines:
                        if "Id:" in line:
                                id=line.split(":")
                                id=id[1].strip()
			if "State:" in line:
		        	state=line.split(":")
			        state=state[1].strip()
                        if "CPU(s):" in line:
                                cpus=line.split(":")
                                cpus=cpus[1].strip()
                        if "CPU time:" in line:
                                cputime=line.split(":")
                                cputime=cputime[1].strip()
                        if "Used memory:" in line:
                                usedmemory=line.split(":")
                                usedmemory=usedmemory[1].strip()
				usedmemory = usedmemory.replace(' KiB', '')

                data[vm]["id"] = id
		data[vm]["state"] = state
                data[vm]["cpus"] = cpus
                data[vm]["cputime"] = cputime
                data[vm]["usedmemory"] = eval(usedmemory) / 1024
		data[vm]["vnc_port"] = F_vm_vnc_port(vm)

 	 print json.dumps(data)

if __name__ == "__main__":
    main()