Как можно проверить, активен ли сетевой адаптер с помощью Python?

В компьютере установлены две сетевые карты, и я разработал небольшую программу, задача которой состоит в том, чтобы выводить имя активного сетевого адаптера. Как можно реализовать это, например, с помощью следующего кода: <br/> <br/> if "Lan 1 - вкл" <br/> root.title("Lan Switcher - Lan 1 enabled") <br/> ?
  • 3 октября 2024 г. 4:54
Ответы на вопрос 3
Для проверки активности сетевого адаптера в системе с помощью Python вы можете использовать библиотеку `psutil`, которая позволяет получать информацию о сетевых интерфейсах. В частности, можно проверить, какие адаптеры активны и какое у них состояние.

Вот пример кода, который делает то, что вы описали:

```python
import psutil
import tkinter as tk

def check_active_adapters():
    active_adapters = []
    # Получаем информацию о сетевых интерфейсах
    for interface, addrs in psutil.net_if_addrs().items():
        # Проверяем, есть ли у адаптера "IPv4" адрес
        if any(addr.family == psutil.AF_INET for addr in addrs):
            # Проверяем состояние интерфейса
            stats = psutil.net_if_stats()[interface]
            if stats.isup:  # Проверяет, активен ли адаптер
                active_adapters.append(interface)
    
    return active_adapters

def update_window():
    active_adapters = check_active_adapters()
    if "Lan 1" in active_adapters:
        root.title("Lan Switcher - Lan 1 enabled")
    elif "Lan 2" in active_adapters:
        root.title("Lan Switcher - Lan 2 enabled")
    else:
        root.title("Lan Switcher - No active LAN")

root = tk.Tk()
root.geometry("300x100")

# Обновляем заголовок окна в зависимости от активных адаптеров
update_window()

# Запускаем главный цикл
root.mainloop()
```

### Как работает этот код:
1. Импортируем библиотеку `psutil` для работы с сетевыми интерфейсами и `tkinter` для GUI.
2. Функция `check_active_adapters()` проверяет доступные сетевые интерфейсы. Она использует `psutil.net_if_addrs()` для получения информации по каждому адаптеру и `psutil.net_if_stats()` для проверки их состояния.
3. В функции `update_window()` мы обновляем заголовок окна в зависимости от активности сетевых адаптеров.
4. Главный цикл `tkinter` запускается, чтобы показать окно.

### Установка библиотеки psutil
Если у вас не установлена библиотека `psutil`, вы можете установить ее с помощью следующей команды:
```bash
pip install psutil
```

Теперь, когда вы запустите данную программу, она проверит наличие активной сетевой карты и обновит заголовок окна в соответствии с результатом.
<a href="https://docs-python.ru/packages/modul-psutil-python/informatsiia-setevykh-kartakh-soedineniiakh/" rel="nofollow">Первая ссылка из поисковика</a> . <br/> Дальше можно смотреть по косвенным признакам (количество пакетов, IP-адрес)
<i>Спасибо. а попроще способа нет?</i> <br/> <br/> А что там проще может быть? <br/> Я пенёк в программировании, разобрался за 10 мин. <br/> <br/> Открываешь cmd <br/> Вводишь команду netsh interface show interface <br/> Понимаешь имя своего интерфейса <br/> <br/> Импортируешь/устанавливаешь через pip - psutil <br/> <br/> В файл py <br/> <pre><code class="python">import psutil

try:
	if(psutil.net_if_stats()["Ethernet 3"][0]):
		print("Включен")
except:
	print("Выключен")</code></pre> <br/> <br/> Не знаю на сколько верный мой подход. <br/> Пробуй, тестируй, познавай мир!
Похожие вопросы