Скрипт за проверка на използвани IP адреси в Proxmox
Скрипт за проверка на използвани IP адреси с имената на контейнери и виртуални машини в Proxmox
Този скрипт е предназначен за администратори на Proxmox, които искат да следят използваните IP адреси в техните мрежи. Той помага да се избегнат конфликти с IP адресите, като показва всички използвани IP адреси в зададени мрежи, заедно с имената на съответните контейнери и виртуални машини.
За какво се използва скриптът
Скриптът събира IP адреси от контейнери и виртуални машини, работещи в Proxmox среда. След това, той групира тези IP адреси според мрежите, към които принадлежат. Администраторите могат лесно да видят кои IP адреси са вече заети и кои са свободни. Това е полезно за планиране на мрежови настройки и за избягване на конфликти при ръчно задаване на IP адреси.
Как работи скриптът
Скриптът работи, като извлича IP адресите от всички стартирани контейнери и виртуални машини в Proxmox. Той проверява IP адресите, принадлежащи към две дефинирани мрежи. След като събере всички IP адреси, скриптът ги изписва заедно с имената на съответните контейнери или виртуални машини.
Необходими Стъпки за Използване на Скрипта
- Подготовка на Скрипта:
- Запазете скрипта в текстов файл с име, например
check_used_ips_with_names.sh
. - Направете файла изпълним чрез командата:
chmod +x check_used_ips_with_names.sh
.
- Запазете скрипта в текстов файл с име, например
- Изпълнение на Скрипта:
- Стартирайте скрипта с администраторски права, като използвате командата:
sudo ./check_used_ips_with_names.sh
. - Скриптът ще извърши проверка на всички стартирани контейнери и виртуални машини.
- Стартирайте скрипта с администраторски права, като използвате командата:
- Резултати от Скрипта:
- Скриптът ще изведе списък на всички използвани IP адреси в дефинираните мрежи.
- Всеки IP адрес ще бъде показан заедно с името на контейнера или виртуалната машина, към която принадлежи.
Използвани IP адреси в мрежа 10.110.110.0/24:
10.110.110.167 - opengist
10.110.110.39 - nextcloud
10.110.110.22 - saitove
10.110.110.20 - pihole
10.110.110.74 - testovi
10.110.110.79 - dockeri
10.110.110.118 - vpn
Използвани IP адреси в мрежа 10.20.20.0/24:
10.20.20.50 - bai-hui
10.20.20.124 - razhod
10.20.20.32 - Paroli
10.20.20.20 - files
10.20.20.100 - html-testove
Проверката на IP адресите е завършена.
Примерен Скрипт
Ето пълният текст на скрипта:
#!/bin/bash
# Мрежи за проверка
network1="10.110.110."
network2="10.20.20."
# Инициализация на масиви за съхранение на използваните IP адреси и имена
declare -A used_ips_network1
declare -A used_ips_network2
# Получаване на всички контейнери (LXC)
containers=$(pct list | awk 'NR>1 {print $1}')
# Получаване на всички виртуални машини (VMs)
vms=$(qm list | awk 'NR>1 {print $1}')
# Функция за събиране на IP адресите
collect_ip() {
local id=$1
local name=$2
local ips=("$@")
for ip in "${ips[@]:2}"; do
if [[ "$ip" == $network1* ]]; then
used_ips_network1["$ip"]="$name"
elif [[ "$ip" == $network2* ]]; then
used_ips_network2["$ip"]="$name"
fi
done
}
# Проверка на IP адресите за всички контейнери
for ct in $containers; do
if pct status $ct | grep -q 'status: running'; then
name=$(pct config $ct | grep -i '^hostname:' | awk '{print $2}')
ips=$(pct exec $ct -- ip -4 -o addr show scope global | awk '{print $4}' | cut -d/ -f1)
collect_ip "$ct" "$name" $ips
fi
done
# Проверка на IP адресите за всички виртуални машини
for vm in $vms; do
if qm agent $vm ping &>/dev/null; then
name=$(qm config $vm | grep -i '^name:' | awk '{print $2}')
ips=$(qm agent $vm network-get-interfaces | grep -oP '(?<="ip-address":"\K[^"]+')
collect_ip "$vm" "$name" $ips
fi
done
# Извеждане на резултатите
echo "Използвани IP адреси в мрежа ${network1}0/24:"
for ip in "${!used_ips_network1[@]}"; do
echo "$ip - ${used_ips_network1[$ip]}"
done
echo ""
echo "Използвани IP адреси в мрежа ${network2}0/24:"
for ip in "${!used_ips_network2[@]}"; do
echo "$ip - ${used_ips_network2[$ip]}"
done
echo ""
echo "Проверката на IP адресите е завършена."
Заключение
Този скрипт е полезен инструмент за администратори на Proxmox. Той позволява лесно управление на IP адреси и предотвратяване на потенциални конфликти в мрежата. Използването му е лесно и не изисква специфични познания по програмиране. Просто го стартирайте и вижте резултатите. Това ще ви помогне да поддържате добре организирана мрежова инфраструктура.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut