# 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, ако няма достъп ## Употреба ```bash ./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.`, като TXT е форматът по подразбиране. В non-interactive режим без `--output` отчетът се извежда към stdout; `--format` определя сериализацията. ## Примери ```bash # Интерактивна проверка и предложение за 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.