Files

4.6 KiB
Raw Permalink Blame History

virtualisation-check.sh

Проверява кои виртуализационни и container решения са инсталирани и отчита инстанциите им, състоянието им и наличните локални container images. Скриптът е само за проверка: не стартира, спира или променя виртуални машини и контейнери.

Какво проверява

За виртуални машини се откриват Libvirt (virsh), Oracle VirtualBox (VBoxManage), VMware Workstation (vmrun), Multipass, Podman machines, Proxmox VE (qm) и активни QEMU/KVM процеси. За контейнерни решения се проверяват Docker, Podman, класически LXC (lxc-ls), LXD (lxc), Incus, containerd (ctr), nerdctl и CRI инструменти (crictl). Ако е наличен kubectl, се отчита и състоянието на pod-овете в текущия Kubernetes context; той може да сочи към отдалечен cluster.

За всеки инструмент първо се проверява дали програмата е инсталирана. При налична програма скриптът заявява списъка и състоянието на инстанциите. Инсталиран инструмент, чийто daemon/socket/cluster не може да бъде достигнат, се отчита като „Installed; query failed“ с причината, вместо да се приема, че няма инстанции. Docker/Podman images се показват отделно от контейнерите.

Изисквания

  • Linux, Bash и Python 3
  • cat и python3 са задължителни за изпълнението на скрипта
  • Всички VM/container CLI инструменти са незадължителни; липсващите се отбелязват като „Not installed“
  • За някои system-level инстанции може да са нужни допълнителни права; скриптът не изисква root и показва грешка за съответния provider, ако няма достъп

Употреба

./Virtualisation/virtualisation-check.sh
./Virtualisation/virtualisation-check.sh --help
Опция Описание
-o, --output PATH Записва директно във файл; без тази опция предлага интерактивен запис
-f, --format FORMAT Формат txt, json или html
--force Позволява презапис на съществуващ файл без потвърждение
-h, --help Показва помощта и приключва

Без зададен --format форматът се разпознава от разширението на --output; ако няма поддържано разширение, се използва TXT. При интерактивен запис началният път е ~/virtualisation-report.<format>, като TXT е форматът по подразбиране. В non-interactive режим без --output отчетът се извежда към stdout; --format определя сериализацията.

Примери

# Интерактивна проверка и предложение за TXT отчет
./Virtualisation/virtualisation-check.sh

# JSON отчет във файл
./Virtualisation/virtualisation-check.sh --output "$HOME/virtualisation.json" --format json

# HTML отчет, разрешаващ презапис
./Virtualisation/virtualisation-check.sh --output /tmp/virtualisation.html --force

Ограничения

Наличието на CLI binary означава, че решението е инсталирано, но не гарантира, че daemon-ът му работи или че текущият потребител има права за достъп. Docker, Podman, LXC/LXD/Incus и containerd показват само тези инстанции, които техният локален CLI може да прочете. kubectl отчита cluster-ът от текущия context, който може да е отдалечен. QEMU/KVM процесите се откриват през /proc; спрени QEMU машини, които не се управляват от Libvirt/Proxmox/друг frontend, не могат да бъдат изброени само по наличието на QEMU binary.