__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
"""
Network introspection utilities using ioctl and the /proc filesystem.
"""
import os
from landscape.lib.fs import read_binary_file
from landscape.lib.fs import read_text_file
DMI_FILES = ("sys_vendor", "chassis_vendor", "bios_vendor", "product_name")
def get_vm_info(root_path="/"):
"""
Return a bytestring with the virtualization type if it's known, an empty
bytestring otherwise.
It loops through some possible configurations and return a bytestring with
the name of the technology being used or None if there's no match
"""
if _is_vm_openvz(root_path):
return b"openvz"
if _is_vm_xen(root_path):
return b"xen"
# Iterate through all dmi *_vendors, as clouds can (and will) customize
# sysinfo values. (https://libvirt.org/formatdomain.html#elementsSysinfo)
dmi_info_path = os.path.join(root_path, "sys/class/dmi/id")
for dmi_info_file in DMI_FILES:
dmi_vendor_path = os.path.join(dmi_info_path, dmi_info_file)
if not os.path.exists(dmi_vendor_path):
continue
vendor = _get_vm_by_vendor(dmi_vendor_path)
if vendor:
return vendor
return _get_vm_legacy(root_path)
def get_container_info(run_path="/run"):
"""
Return a string with the type of container the client is running in, if
any, an empty string otherwise.
"""
for filename in ("container_type", "systemd/container"):
path = os.path.join(run_path, filename)
if os.path.exists(path):
return read_text_file(path).strip()
return ""
def _is_vm_xen(root_path):
"""Check if the host is virtualized with Xen."""
sys_xen_path = os.path.join(root_path, "sys/bus/xen/devices")
# Paravirtualized and HVM instances have device links under the directory
return os.path.isdir(sys_xen_path) and os.listdir(sys_xen_path)
def _is_vm_openvz(root_path):
"""Check if the host is virtualized with OpenVZ."""
return os.path.exists(os.path.join(root_path, "proc/vz"))
def _get_vm_by_vendor(sys_vendor_path):
"""Return the VM type byte string (possibly empty) based on the vendor."""
# Use lower-key string for vendors, since we do case-insentive match.
# We need bytes here as required by the message schema.
vendor = read_binary_file(sys_vendor_path, limit=1024).lower()
content_vendors_map = (
(b"amazon ec2", b"kvm"),
(b"bochs", b"kvm"),
(b"digitalocean", b"kvm"),
(b"google", b"gce"),
(b"innotek", b"virtualbox"),
(b"microsoft", b"hyperv"),
(b"nutanix", b"kvm"),
(b"openstack", b"kvm"),
(b"qemu", b"kvm"),
(b"kvm", b"kvm"),
(b"vmware", b"vmware"),
(b"rhev", b"kvm"),
(b"parallels", b"kvm"),
)
for name, vm_type in content_vendors_map:
if name in vendor:
return vm_type
return b""
def _get_vm_legacy(root_path):
"""Check if the host is virtualized looking at /proc/cpuinfo content."""
try:
cpuinfo = read_text_file(os.path.join(root_path, "proc/cpuinfo"))
except OSError:
return b""
if "qemu" in cpuinfo:
return b"kvm"
return b""
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| apt | Folder | 0755 |
|
|
| __init__.py | File | 198 B | 0644 |
|
| amp.py | File | 21.87 KB | 0644 |
|
| backoff.py | File | 1.65 KB | 0644 |
|
| base64.py | File | 156 B | 0644 |
|
| bootstrap.py | File | 1.36 KB | 0644 |
|
| bpickle.py | File | 6.68 KB | 0644 |
|
| cli.py | File | 457 B | 0644 |
|
| cloud.py | File | 1.69 KB | 0644 |
|
| compat.py | File | 621 B | 0644 |
|
| config.py | File | 12.36 KB | 0644 |
|
| disk.py | File | 5.09 KB | 0644 |
|
| encoding.py | File | 545 B | 0644 |
|
| fd.py | File | 750 B | 0644 |
|
| fetch.py | File | 6.65 KB | 0644 |
|
| format.py | File | 1.96 KB | 0644 |
|
| fs.py | File | 3.8 KB | 0644 |
|
| gpg.py | File | 1.88 KB | 0644 |
|
| hashlib.py | File | 264 B | 0644 |
|
| jiffies.py | File | 1.59 KB | 0644 |
|
| juju.py | File | 828 B | 0644 |
|
| lock.py | File | 705 B | 0644 |
|
| log.py | File | 444 B | 0644 |
|
| logging.py | File | 2.94 KB | 0644 |
|
| machine_id.py | File | 1.02 KB | 0644 |
|
| message.py | File | 2.57 KB | 0644 |
|
| monitor.py | File | 6.19 KB | 0644 |
|
| network.py | File | 9.74 KB | 0644 |
|
| os_release.py | File | 1.78 KB | 0644 |
|
| persist.py | File | 20.57 KB | 0644 |
|
| plugin.py | File | 1.69 KB | 0644 |
|
| process.py | File | 6.66 KB | 0644 |
|
| reactor.py | File | 8.65 KB | 0644 |
|
| schema.py | File | 6.61 KB | 0644 |
|
| scriptcontent.py | File | 519 B | 0644 |
|
| sequenceranges.py | File | 5.58 KB | 0644 |
|
| store.py | File | 1.42 KB | 0644 |
|
| sysstats.py | File | 7.71 KB | 0644 |
|
| tag.py | File | 506 B | 0644 |
|
| testing.py | File | 24.48 KB | 0644 |
|
| timestamp.py | File | 233 B | 0644 |
|
| twisted_util.py | File | 4.54 KB | 0644 |
|
| user.py | File | 1.44 KB | 0644 |
|
| versioning.py | File | 1.25 KB | 0644 |
|
| vm_info.py | File | 3.12 KB | 0644 |
|
| warning.py | File | 393 B | 0644 |
|