У меня проблемы с получением IP-адреса от точки доступа. Точка доступа является открытой, но требует входа через портал авторизации.

Я использую Debian Jessie и подключаюсь через терминал. Я использую i3 и очень минимальную компоновку экрана, я провожу большую часть своего времени в оболочке без оконного менеджера, поэтому решения «указать и щелкнуть» не требуются :)

Я разработал собственное программное обеспечение и скрипт для автоматического подключения к беспроводной точке доступа. Это работает, но иногда dhclient занимает слишком много времени, и он не подключается. Также моя связь выпадает случайно.

Вот мой сценарий:

wifi.sh

#!/bin/bash

# Bring the card down
ifconfig wlan0 down &&

# Change MAC address
macchanger wlan0 -r &&

# Bring the card back up
ifconfig wlan0 up &&

# Connect to access point
echo 'Connecting to AP ...'
iw wlan0 connect "AP_NAME" &&

# Get an IP address
dhclient wlan0 &&

# Log into AP
echo 'Logging into BTFon ...'
btfon myusername@btinternet.com mysecretpassword

# Ping Google
ping -c3 google.com

btfon - это приложение, которое я разработал на C для входа в облако, чтобы я мог получить доступ к Интернету. Это работает нормально и не является причиной проблемы. Вы можете просмотреть исходный код здесь: https://github.com/UndergroundLabs/BTFon. Скрипт не достигает этой части в скрипте, поэтому, скорее всего, он не связан.

Я проверил dmesg который не дает никаких результатов. Я вижу, что я связан и аутентифицирован с точкой доступа. Я не нашел никаких ошибок.

Проблема, кажется, происходит в dhclient wlan0 .

Я подумал, что, возможно, network-manager запущен, но я установил без среды рабочего стола и установил xorg и i3 после установки, поэтому network-manager не был установлен с KDE/Gnome и т.д.

Не уверен, в чем проблема, потому что он работал нормально, прежде чем мне пришлось переустановить. В прошлые выходные мой HDD умер, и ему пришлось переустановить Debian Jessie ... и переписать мои сценарии, потому что я потерял все (длинная история).

Любая помощь по вероятной причине проблемы?

1 ответ1

1

dhclient вернет 0, даже если он не получит ответ от DHCP-сервера, а затем продолжит работу в фоновом режиме. используйте опцию -1 чтобы заставить его попробовать только один раз и вернуть 2 в случае неудачи. Также добавьте -v чтобы получить больше полезной информации. Скорее всего, вам нужно дать AP некоторое время, прежде чем использовать dhclient . Добавьте -timeout или sleep в ваш скрипт. Или база данных аренды испорчена, потому что вы меняете MAC. Я бы добавил dhclient -r wlan0 после того, как вы взломали wlan0 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .