BASH скрипт, който показва публична и частна информация за IP адрес в Linux

BASH скрипт, който показва публична и частна информация за IP адрес в Linux

Това е лесен за използване BASH скрипт, който показва както публична, така и частна информация за IP адрес в Linux. Скриптът използва curl за получаване на публична информация от външна услуга и вградени команди за локалната информация.

Обяснение на скрипта:

  1. Проверка за инсталирани зависимости: Скриптът проверява дали curl и jq са инсталирани. curl се използва за извличане на публична информация за IP адреса, а jq се използва за по-удобен формат на JSON данните.
  2. Функции за показване на информация: Има две функции – една за публична информация и една за частна информация .
  3. Функция за показване на меню: съдържа опциите за избор.
  4. Основен цикъл: Докато потребителят не избере да излезе, скриптът ще продължава да показва менюто и да изпълнява избраните действия.
  5. Опция за повторение или изход: След изпълнението на всяка избрана опция, потребителят ще бъде попитан дали иска да направи нов избор или да излезе.

Този скрипт ще продължи да работи, докато потребителят не реши да излезе чрез избиране на опция 4 или отговаряйки с не на въпроса за нов избор.

BASH скрипт, който показва публична и частна информация за IP адрес в Linux.

За да използвате скрипта, запишете го в текстов файл (например ip_info.sh), направете го изпълним с командата chmod +x ip_info.sh, и го стартирайте с ./ip_info.sh.

#!/bin/bash

# Скрипт за показване на частна и публична информация за IP адрес

# Проверка дали curl е инсталиран
if ! command -v curl &> /dev/null; then
    echo "Моля, инсталирайте curl, за да използвате този скрипт."
    exit 1
fi

# Функция за показване на публична информация за IP
function show_public_ip_info {
    echo "Публична информация за IP:"
    public_ip=$(curl -s ifconfig.me)
    echo "Публичен IP адрес: $public_ip"
    echo "Информация за публичен IP:"
    curl -s ipinfo.io/$public_ip | jq .
    echo
}

# Функция за показване на частна информация за IP
function show_private_ip_info {
    echo "Частна информация за IP:"
    private_ip=$(hostname -I | awk '{print $1}')
    echo "Частен IP адрес: $private_ip"
    echo "Информация за мрежов интерфейс:"
    ip addr show | grep -A2 "$private_ip"
    echo
}

# Проверка дали jq е инсталиран
if ! command -v jq &> /dev/null; then
    echo "Моля, инсталирайте jq, за да използвате този скрипт за по-добър формат на JSON данни."
    echo "Опитвам се да покажа информация без jq..."
    show_public_ip_info() {
        echo "Публична информация за IP:"
        public_ip=$(curl -s ifconfig.me)
        echo "Публичен IP адрес: $public_ip"
        echo "Информация за публичен IP:"
        curl -s ipinfo.io/$public_ip
        echo
    }
fi

# Функция за показване на меню
function show_menu {
    echo "Изберете опция:"
    echo "1. Показване на публична информация за IP"
    echo "2. Показване на частна информация за IP"
    echo "3. Показване на цялата информация (публична и частна)"
    echo "4. Изход"
}

# Основен цикъл
while true; do
    show_menu
    read -p "Вашият избор (1/2/3/4): " choice
    case $choice in
        1)
            show_public_ip_info
            ;;
        2)
            show_private_ip_info
            ;;
        3)
            show_public_ip_info
            show_private_ip_info
            ;;
        4)
            echo "Изход."
            exit 0
            ;;
        *)
            echo "Невалиден избор. Моля, опитайте отново."
            ;;
    esac

    # Опция за повторение или изход
    read -p "Желаете ли да направите нов избор? (да/не): " again
    if [[ "$again" != "да" ]]; then
        echo "Изход."
        exit 0
    fi
done

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: