Страница 1 из 1

Убить все сетевые интерфейсы macvtap для qemu

Добавлено: 14 ноя 2024, 11:27
ya
clean_macvtap.sh

Код: Выделить всё

#!/bin/bash

# Остановить все виртуальные машины, использующие macvtap
#virsh list --all | awk '/running/{print $1}' | while read vm; do
#    echo "Stopping virtual machine: $vm"
#    virsh shutdown "$vm" || true
#done

# Удаляем все macvtap интерфейсы
#ip link show type macvtap | grep '@' | awk '{print $2}' | cut -d'@' -f1 | while read interface; do
ip link show type macvtap | awk '$9 == "DOWN" {print $2}' | cut -d'@' -f1 | while read interface; do
    echo "Deleting macvtap DOWN interface: $interface"
    sudo ip link delete dev "$interface" type macvtap
done

ip link show type macvtap | awk '$9 == "LOWERLAYERDOWN" {print $2}' | cut -d'@' -f1 | while read interface; do
    echo "Deleting macvtap LOWERLAYERDOWN interface: $interface"
    sudo ip link delete dev "$interface" type macvtap
done

# Перезапускаем сетевой сервис
#echo "Restarting network service..."
#systemctl restart networking.service
#sudo ifdown -a && sudo ifup -a

# Проверим наличие оставшихся macvtap интерфейсов
if ip link show type macvtap > /dev/null 2>&1; then
    echo "Some macvtap interfaces still exist."
else
    echo "All macvtap interfaces have been successfully removed."
fi

exit 0

Запуск

Код: Выделить всё

sudo ./clean_macvtap.sh 

Re: Убить все сетевые интерфейсы macvtap для qemu

Добавлено: 15 ноя 2024, 10:08
ya

Код: Выделить всё

ip link show type macvtap

Код: Выделить всё

ip link delete dev "$interface" type macvtap

Re: Убить все сетевые интерфейсы macvtap для qemu

Добавлено: 15 ноя 2024, 10:16
ya

Код: Выделить всё

sudo apt install libxml2-utils
создать каталог

Код: Выделить всё

sudo mkdir -p /usr/local/lib/libvirt/hooks/qemu/
/usr/local/lib/libvirt/hooks/qemu/remove_macvtap_hook.sh

Код: Выделить всё

#!/bin/bash

DOMAIN="$1"
ACTION="$2"
MACVTAP_INTERFACE=""

# Функция для поиска macvtap интерфейса, связанного с данной виртуальной машиной
get_macvtap_interface() {
    local domain=$1
    local xml=$(virsh dumpxml "$domain")
    local iface=$(echo "$xml" | xmllint --xpath '//devices/interface[@type="direct"]/@target_dev' - 2>/dev/null)
    echo "$iface"
}

# Основная логика
case "$ACTION" in
    stopped)
        MACVTAP_INTERFACE=$(get_macvtap_interface "$DOMAIN")
        if [ -n "$MACVTAP_INTERFACE" ]; then
            echo "Deleting macvtap interface: $MACVTAP_INTERFACE"
            ip link delete dev "$MACVTAP_INTERFACE" type macvtap
        fi
        ;;
esac
выставить права доступа

Код: Выделить всё

sudo chmod +x /usr/local/lib/libvirt/hooks/qemu/remove_macvtap_hook.sh