Bağlantı kesildikten sonra bir wifi bağlantısında nasıl devam edilir?


9

İnternet gerektiren bir yazılım çalıştıran bir Ubuntu makinem var. Ancak, bazen wifi başarısız olur (örneğin yönlendirici yeniden başlatılır) ve ağ yöneticisi yeniden başlatmaya el ile hizmet verene veya onu bulmak için wifi'yi kapatıp açana kadar ağı tekrar bulamaz.

Bağlantıyı izlemek için bir cron işi veya bir denetim işi çalıştırmanın olası bir yolu var mıdır ve ağın ağ yöneticisi hizmetini yeniden başlatıp söz konusu SSID'ye bağlandığı bulunamazsa?


Bunun yeni bir ağ yöneticisi hatası nedeniyle olabileceğini düşünüyorum, çünkü bu sorunu sadece son zamanlarda yaşamaya başladım, Ubuntu 15.04'e yükselttikten sonra düşünüyorum.
Sadi

1
Bir sorun olabileceğini düşündüren birkaç hata raporu vardır. Çekirdek (uname -a) ve ağ yöneticisi sürümünüzün ayrıntılarını ve ayrıca WiFi kartınızın ayrıntılarını gönderebilir misiniz?
DaveM

Yanıtlar:


7

Bunun yeni bir ağ yöneticisi hatası nedeniyle olabileceğini düşünüyorum, çünkü bu sorunu sadece son zamanlarda yaşamaya başladım - Ubuntu 15.04'e yükselttikten sonra düşünüyorum.

Bu sorunu geçici olarak şu iki dosyayla geçici bir çözüm olarak çözmeyi başardığım anlaşılıyor:

  1. WiFi bağlantısını izlemek ve bağlantı kesildiğinde, örneğin ~/.bin/WiFi-Keep-Connectedbu içerikle WiFi'yi açıp kapatmak için bir komut dosyası var :


#!/bin/bash
while true; do
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep "^wifi:disconnected$"
    if [ $? -eq 0 ]; then
        rfkill block wifi && rfkill unblock wifi
        sleep 10
    fi
    sleep 10
done

  1. Ayrıca, bu komut dosyası ile her giriş yaptığımda bu komut dosyasının çalışmasını sağlamak için bir .desktop dosyam var ~/.config/autostart/KeepWifiConnected.desktop:


[Desktop Entry]
Type=Application
Exec=/home/"username"/.bin/WiFi-Keep-Connected
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Keep WiFi Connected
Icon=networkmanager

Not: Exec=Yukarıda belirtilen yola kullanıcı adınızı girmeniz gerekir .

Not: Bazen Wi-Fi'yi bu şekilde yeniden başlatmak yeterli olmaz, bu durumda terminalden bir veya iki kez bu komutu girerek Ağ Yöneticisi'ni yeniden başlatmam gerekir :sudo service network-manager restart

Bu nedenle, yukarıdaki komut dosyasını (her ihtimale karşı) şu şekilde değiştirmek daha iyi bir fikir olabilir :


#!/bin/bash
while true; do
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep "^wifi:disconnected$"
    if [ $? -eq 0 ]; then
        rfkill block wifi && rfkill unblock wifi
        sleep 10
    fi
    LC_ALL=C nmcli -t -f TYPE,STATE dev | grep "^wifi:disconnected$"
    if [ $? -eq 0 ]; then
        gksudo service network-manager restart
        sleep 10
    fi
    sleep 10
done


1

Nedenini bilmiyorum, ama söylediğin gibi, bazen wifi başarısız olduğunda, ağ yöneticisi ağı tekrar bulamaz.

Sorun, bir wifi bağlantı hatası sonra, ağ yöneticisi wifi listesini yenilemez olduğunu düşünüyorum (ve ağ yöneticisi sorunlu ağ gizler gibi görünüyor). Ağ yöneticisinin yeniden tarama menüsü seçeneği yoktur ve ağ yöneticisi menüsünde kablosuz onay kutusunun devre dışı bırakılması ve etkinleştirilmesi yeni bir wifi taramasını zorlamaz (hizmetin yeniden başlatılması gibi).

Ağ yöneticisi benim wireles bağlantımı kaybettiğinde ve yine wifi'imi bulamazsa (ve wifi'nin etkin olduğunu biliyorum), komutu çalıştırırım:

sudo iwlist wlan0 scan

WLAN0 arayüzünde bir wifi taraması gerçekleştirir (wlan0 dizüstü bilgisayarımdaki kablosuz arayüzün adıdır) ve size mevcut kablosuz ağları gösterir, ancak bir yan etki olarak ağ yöneticisi listeyi otomatik olarak yeniler ve kayıp ağı bulur.

Bu sorun oluştuğunda komutu manuel olarak yürütmeyi tercih ederim (ağ yeniden bağlanma iletişimin devam etmesini sağlamaz ve bazı programların yeniden başlatılması gerekir).

Ancak, belirttiğiniz gibi, bunu cron yapabilirsiniz ve bağlantıyı test etmeden yapabilirsiniz (tarama işlemi wifi listenizi günceller, ancak bağlıysanız mevcut kablosuz bağlantınızı kapatmaz).

Tercih ederseniz, ping veya iwconfig kullanarak bağlanabilirliği test edebilirsiniz ve bağlı değilseniz taramayı başlatın.

Gibi bir şey:

#!/bin/bash
if ! ping -c 1 -W 1 your_router_ip &> /dev/null
then
    iwlist wlan0 scan
fi

Ancak, bu komut dosyasının kök ayrıcalıklarıyla sudo edilmesi veya yürütülmesi gerektiğini unutmayın. 1 saniyelik zaman aşımı ile yalnızca 1 ping gönderir.


Yukarıdaki çözüm iyi, ancak bağlantının düştüğünü bildiren ağ yöneticisinden (nm) nasıl bildirim alınır. Bu, nm'nin içinden mümkün olmalıdır, kaynağa hızlı bir bakış, işlevin varlığını öneriyor gibi görünecektir. Mesaj dbus'tan alınır ve nm simgesi güncellenir, bu yüzden bu bir hata olabilir veya belki de sistemin başka bir kısmı bağlantının kopuşunu yakalar ve değiştirilir ve uyarı yeniden bağlanmaya çalışmak için geçmez mi?
DaveM

0

Ne düşünüyorum sorun yönlendirici bağlantı sorunları nedeniyle bağlantı kaybolur gibi. Yönlendiricinin kendisinde sorun olduğunda ağ yöneticisini yeniden başlatmak yardımcı olamaz. Aksine kullandığınız askıya yazılımını çalıştıran süreci koymak için bir komut dosyası oluşturabilir SIGSTOP bağlantısı kullanmaya devam etmek sürecine tekrar tetiği kaybetti ve aldığında SIGCONT Ağ kullanılabilir olduğunda. Ve betiği cron işlerinize ekleyin ve her dakika çalışacak şekilde zamanlayın.

Referans için: http://hints.macworld.com/article.php?story=20030915193440334

Bu yardımcı olur umarım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.