diff --git a/scripts/check_node.sh b/scripts/check_node.sh new file mode 100644 index 0000000..aff3e3c --- /dev/null +++ b/scripts/check_node.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash +set -euo pipefail + +echo "==================================================" +echo " Virtuality Node Diagnostics" +echo "==================================================" + +echo + echo "[System]" +if [[ -f /etc/os-release ]]; then + . /etc/os-release + echo "OS: ${PRETTY_NAME}" +fi +uname -a + +echo + echo "[CPU virtualization]" +if grep -E -q '(vmx|svm)' /proc/cpuinfo; then + echo "OK: hardware virtualization flag found" +else + echo "WARNING: vmx/svm flag not found" +fi + +echo + echo "[Services]" +for service in libvirtd virtlogd cockpit.socket; do + if systemctl list-unit-files | grep -q "^${service}"; then + echo -n "${service}: " + systemctl is-active "$service" || true + else + echo "${service}: not installed" + fi +done + +echo + echo "[Packages]" +for bin in virsh qemu-system-x86_64 virt-install cockpit-bridge; do + if command -v "$bin" >/dev/null 2>&1; then + echo "OK: $bin -> $(command -v "$bin")" + else + echo "MISSING: $bin" + fi +done + +echo + echo "[libvirt VMs]" +if command -v virsh >/dev/null 2>&1; then + virsh list --all || true +else + echo "virsh not found" +fi + +echo + echo "[libvirt storage pools]" +if command -v virsh >/dev/null 2>&1; then + virsh pool-list --all || true +else + echo "virsh not found" +fi + +echo + echo "[Network interfaces]" +ip -br a || true + +echo + echo "[Routes]" +ip route || true + +echo + echo "[Virtuality paths]" +for dir in /opt/virtuality /var/lib/virtuality /var/lib/virtuality/iso /var/lib/virtuality/images /var/lib/virtuality/backups /var/log/virtuality; do + if [[ -d "$dir" ]]; then + echo "OK: $dir" + else + echo "MISSING: $dir" + fi +done + +echo + echo "[Firewall]" +if command -v ufw >/dev/null 2>&1; then + ufw status || true +else + echo "ufw not installed" +fi + +echo + echo "==================================================" +echo " Diagnostics completed" +echo "=================================================="