Скрипт за сканиране на MAC адреси в Proxmox
Този Bash скрипт е предназначен за сканиране на виртуални машини (VM) и контейнери в системата Proxmox VE за дублирани MAC адреси.
Скриптът генерира отчет, който показва MAC адресите на всички VM и контейнери, както и всички случаи на дублиране.
Изпълнение на скрипта:
Създайте нов файл, например check_mac_addresses.sh
:
vi check_mac_addresses.sh
Добавете следния код в скрипта:
#!/bin/bash
echo "Checking MAC addresses of all VMs and containers..."
# Извличане на всички VM ID-та и добавяне на отстраняване на грешки
VM_IDS=$(qm list | awk 'NR>1 {print $1}')
echo "Found VM IDs: $VM_IDS"
declare -A mac_addresses
declare -A duplicates
for VM_ID in $VM_IDS; do
echo "Checking VM ID: $VM_ID"
# Извличане на мрежови конфигурации за дадена VM и добавяне на отстраняване на грешки
NET_CONFIG=$(qm config $VM_ID | grep -i "net")
echo "Network config for VM ID $VM_ID: $NET_CONFIG"
# Извличане на MAC адреса от мрежовата конфигурация
MAC=$(echo "$NET_CONFIG" | grep -oP '(?<=macaddr=)[^,]+')
echo "VM ID $VM_ID has MAC address: $MAC"
# Проверка за дублирани MAC адреси
if [[ -n "$MAC" ]]; then
if [[ -n "${mac_addresses[$MAC]}" ]]; then
echo "Duplicate MAC address found: $MAC in VMs $VM_ID and ${mac_addresses[$MAC]}"
duplicates[$MAC]="${duplicates[$MAC]} $VM_ID"
else
mac_addresses[$MAC]=$VM_ID
fi
fi
done
# Извличане на всички контейнерни ID-та и добавяне на отстраняване на грешки
CT_IDS=$(pct list | awk 'NR>1 {print $1}')
echo "Found container IDs: $CT_IDS"
for CT_ID in $CT_IDS; do
echo "Checking container ID: $CT_ID"
# Извличане на мрежови конфигурации за даден контейнер и добавяне на отстраняване на грешки
NET_CONFIG=$(pct config $CT_ID | grep -i "net")
echo "Network config for container ID $CT_ID: $NET_CONFIG"
# Извличане на MAC адреса от мрежовата конфигурация
MAC=$(echo "$NET_CONFIG" | grep -oP '(?<=hwaddr=)[^,]+')
echo "Container ID $CT_ID has MAC address: $MAC"
# Проверка за дублирани MAC адреси
if [[ -n "$MAC" ]]; then
if [[ -n "${mac_addresses[$MAC]}" ]]; then
echo "Duplicate MAC address found: $MAC in containers $CT_ID and ${mac_addresses[$MAC]}"
duplicates[$MAC]="${duplicates[$MAC]} $CT_ID"
else
mac_addresses[$MAC]=$CT_ID
fi
fi
done
echo "MAC address check completed."
if [ ${#duplicates[@]} -eq 0 ]; then
echo "No duplicate MAC addresses found."
else
echo "Duplicate MAC addresses detected:"
for mac in "${!duplicates[@]}"; do
echo "MAC address $mac is used by: ${duplicates[$mac]}"
done
fi
Запазете скрипта
Направете файла изпълним с команда:
chmod +x check_mac_addresses.sh
Стартиране на скрипта
Стартирайте скрипта на вашия Proxmox сървър:
./check_mac_addresses.sh
Този скрипт ще извлече списъка с всички виртуални машини, ще изтегли MAC адресите им и ще провери за дублирани адреси. Ако намери дублирани MAC адреси, ще ви уведоми в изхода.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut