|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
check_hyperv() { |
|
|
|
|
|
if [ -d "/sys/hypervisor/microsoft" ]; then |
|
|
echo "Hypervisor: Hyper-V" |
|
|
return 0 |
|
|
fi |
|
|
|
|
|
|
|
|
if dmesg | grep -qi "Hyper-V"; then |
|
|
echo "Hypervisor: Hyper-V (via dmesg)" |
|
|
return 0 |
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 1 |
|
|
} |
|
|
|
|
|
|
|
|
check_kvm() { |
|
|
|
|
|
if [ -c "/dev/kvm" ]; then |
|
|
echo "Hypervisor: KVM (via /dev/kvm)" |
|
|
return 0 |
|
|
fi |
|
|
|
|
|
|
|
|
if [ -f "/sys/class/dmi/id/product_name" ] && grep -qi "KVM" "/sys/class/dmi/id/product_name"; then |
|
|
echo "Hypervisor: KVM" |
|
|
return 0 |
|
|
fi |
|
|
|
|
|
|
|
|
if dmesg | grep -qi "KVM"; then |
|
|
echo "Hypervisor: KVM (via dmesg)" |
|
|
return 0 |
|
|
fi |
|
|
|
|
|
return 1 |
|
|
} |
|
|
|
|
|
|
|
|
if check_hyperv; then |
|
|
exit 0 |
|
|
elif check_kvm; then |
|
|
exit 0 |
|
|
else |
|
|
|
|
|
if [ -f "/sys/class/dmi/id/product_name" ] && grep -qi "VMware" "/sys/class/dmi/id/product_name"; then |
|
|
echo "Hypervisor: VMware" |
|
|
elif [ -f "/sys/class/dmi/id/product_name" ] && grep -qi "VirtualBox" "/sys/class/dmi/id/product_name"; then |
|
|
echo "Hypervisor: VirtualBox" |
|
|
elif [ -f "/sys/class/dmi/id/product_name" ] && grep -qi "QEMU" "/sys/class/dmi/id/product_name"; then |
|
|
echo "Hypervisor: QEMU" |
|
|
else |
|
|
echo "Hypervisor: Unknown or Bare Metal" |
|
|
fi |
|
|
exit 1 |
|
|
fi |
|
|
|