Bağlantı kesildikten sonra Ağ Yöneticisi'ni yeniden başlat?


18

Ubuntu 11.10 (Unity 3D) ve yönlendirici veya modem olmadan bir kablo (DSL) internet bağlantısı kullanma.

Eğer ben benim internet bağlantısını kesmek, sadece ağ yöneticisi simgesine tıklayarak ve benim bağlantılar görülebilir beri açılır menüden bir bağlantı seçerek yeniden bağlanabilirsiniz. Ağ yöneticisini yeniden başlatmanıza gerek yoktur.

Ancak internet bağlantısı kendi başına düştüğünde , bir terminal sudo service network-manager restartaçtım ve ağ yöneticisi açılır menüsünde herhangi bir bağlantı görmediğim için kullanıyorum . Ancak komuttan sonra ağ yöneticisi başlar ve otomatik olarak bağlanır.

Bağlantının her kesişinde ağ yöneticisinin yeniden başlatılmasına gerek kalmayacak bir ayar var mı (yeniden başlatmaya ihtiyaç duymadığında bağlantısını kesmemden farklı olarak)?

Diğer bir deyişle, ISS ile bağlantımın kopup kopmadığına bakılmaksızın bilgisayarı kullandığım sürece ağ yöneticisinin durmasını istemiyorum.

Bir terminal açmak ve komut ve şifreyi yazmak çok önemli değil, ancak ağ yöneticisinin durmamasını sağlamanın bir yolu varsa, bu daha iyi olacaktır.

düzenleme tarihi 26 Oca 2012: Lines from syslog

Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: No response to 3 echo-requests
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Serial link appears to be disconnected.
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Connect time 241.5 minutes.
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Sent 3575961 bytes, received 79026206 bytes.
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Connection terminated.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing workstation service for ppp0.
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): device state change: activated -> failed (reason 'ppp-disconnect') [100 120 13]
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <warn> Activation (eth0) failed.
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]:    SCPlugin-Ifupdown: devices removed (path: /sys/devices/virtual/net/ppp0, iface: ppp0)
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): now unmanaged
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): device state change: failed -> unmanaged (reason 'removed') [120 10 36]
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): deactivating device (reason 'removed') [36]
Jan 25 20:09:36 aes-Inspiron-1545 dbus[802]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper)
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <warn> could not read ppp stats: No such device
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): cleaning up...
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): taking down device.
Jan 25 20:09:36 aes-Inspiron-1545 kernel: [18027.155552] sky2 0000:09:00.0: eth0: disabling interface
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Interface eth0.IPv6 no longer relevant for mDNS.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Leaving mDNS multicast group on interface eth0.IPv6 with address fec0::b:223:aeff:fe2d:2431.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing address record for 2002:1b00:3b4f:b:223:aeff:fe2d:2431 on eth0.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing address record for 2002:1b00:3754:b:223:aeff:fe2d:2431 on eth0.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing address record for 2002:7345:f137:b:223:aeff:fe2d:2431 on eth0.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing address record for fec0::b:223:aeff:fe2d:2431 on eth0.
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> Unmanaged Device found; state CONNECTED forced. (see http://bugs.launchpad.net/bugs/191889)
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> Unmanaged Device found; state CONNECTED forced. (see http://bugs.launchpad.net/bugs/191889)
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Terminating on signal 15
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Exit.
Jan 25 20:09:36 aes-Inspiron-1545 dbus[802]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[3529]: <info>  Caught signal 15, shutting down...
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> caught signal 15, shutting down normally.
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <warn> quit request received, terminating...
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth1): now unmanaged
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth1): device state change: unavailable -> unmanaged (reason 'removed') [20 10 36]
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> Unmanaged Device found; state CONNECTED forced. (see http://bugs.launchpad.net/bugs/191889)
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> exiting (success)
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[6945]: <info>  ModemManager (version 0.5) starting...
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[6947]: <info> NetworkManager (version 0.9.1.90) is starting...
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[6947]: <info> Read config file /etc/NetworkManager/NetworkManager.conf
Jan 25 20:11:56 aes-Inspiron-1545 kernel: [18167.470749] init: reconnect main process (6948) terminated with status 2
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[6945]: <info>  Loaded plugin Nokia
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[6945]: <info>  Loaded plugin Ericsson MBM
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[6945]: <info>  Loaded plugin MotoC

resim açıklamasını buraya girin



Lütfen şu iki çözümü deneyin: (1) forums.fedoraforum.org/showthread.php?t=229718#2 (2) platonic.techfiz.info/2009/07/28/… - Maalesef mobil bir geniş bantım yok denemek için bağlantı.
Savvas Radevic

@medigeek, mobil bağlantım bile yok. Bir DSL (kablolu) bağlantıdır: telefon tipi sokete takılan bir kablo. Sonunda müdahale eden bir yönlendirici veya modem yok.

@ vasa1 DSL bağlantınızı kesin ve terminalde bu komutu verin. nmcli con up id "DSL connection 1". DSL'im yok, bu yüzden tüm komut ve çıktılar için yardımınıza ihtiyacım var. Çıktınızı yorumlayın.
Rahul Virpara

çıktı vermek:nmcli -t -f TYPE,STATE dev
Rahul Virpara

Yanıtlar:


16

İşte bir Upstart betiği yerleştirebilirsiniz /etc/init/reconnect.conf:

start on started network-manager
stop on runlevel [016]

script
  while true; do
    if ifconfig eth0 | grep -q "inet addr:"; then
       # echo "all ok!"
    else
       restart network-manager
    fi
    sleep 5
  done
end script

Eth0 için bir ip adresi kaybettikten sonra (farklıysa arayüzünüze yapılandırın), ağ yöneticisi işini yeniden başlatacak ve bağlantıyı geri yükleyecektir.


Bunların hepsi benim için yeni, bu yüzden el tutmayı takdir edeceğim. Reconnect.conf adlı bir metin dosyası hazırlayıp "root" izniyle / etc / init içine yerleştirebilir miyim? Metin kelimesini kelime için mi kullanırım? "Aktif Ağ Bağlantıları" nda "Arayüz: Ethernet (eth0)" görüyorum. Bağlantı adım "vasa1". "İnet addr:" olduğu gibi bırakıyor muyum veya bir değer girmem gerekiyor mu? Ubuntu bu dosyanın okunması gerektiğini bilecek mi? Yoksa bir şey yapmak zorunda mıyım?

1
Mı kök olarak adlandırılan bir dosya yapmak, dediği gibi reconnect.confhiç /etc/init. Değiştirmeniz gereken tek şey, eğer doğru değilse, başka bir şeye eth0'dır. inet addr:parçası sadece grep için bir filtredir ve dokunulmamalıdır. İlgili bağlantı adı üzerinden kontrol edilebilir ifconfig. Upstart bu dosyayı otomatik olarak okuyacaktır sudo start reconnectve işi devam ettirmek için yapmanız gerekir . Bir sonraki yeniden başlatmada otomatik olarak başlayacaktır.
Tüminoid

İlk satır ile ifconfigbaşlar, ethobu yüzden bunu kullanacağım ve sonra sudo start reconnectbağlantı düştüğünde. Sonuç ile geri göndereceğim. Teşekkürler!

Ben yarattım /etc/init/reconnect.confve yeniden başlattım. Yeniden başlattıktan bir süre sonra bağlantım kesildiğinde, nm yeniden başlamadı. Ben de çıkardım sudo start reconnect. reconnect stop/waitingyanıt oldu ama nm yeniden başlamadı. Ben zorunda sudo service network-manager restartolan ben normalde ne olduğunu. Bunun yerine, bir restart network-managerşey restart service network-managergerekli midir? (BTW,

Sistemimde ağ yöneticisi, nm için bir başlangıç ​​işidir ve yukarıdaki komutlar benim için iyi çalışır, ancak yeniden başlatma komutunu sisteminizde çalışan herhangi bir şeye değiştirmekten çekinmeyin service network-manager restart. Sadece merak ediyorum, status network-managersisteminizin çıktısı nedir? stop/waitingYeniden başlatmanın ardından bu diyorsa (veya bir hata veriyorsa), başlangıcı benzer bir şeye değiştirmeli start on runlevel [2345]ve daha sleep 60önce eklemeniz gerekir .
Tüminoid

2

Hızlı ve kirli bir çözüm, ping -i 5 google.com || service network-manager restartkök olarak çalışan bir komut dosyası yazmaktır (bunun için bir /etc/init.d/-daemon yazabilirsiniz, ancak çözüm ÇOK kirli olduğu için bunu yapmam)

Bu komut dosyası, Google her bulunamadığında ağ yöneticisini yeniden başlatır ve her beş saniyede bir kontrol eder.


Çözümü anlamadığım halde buna oy verdim çünkü daha önce hiç senaryo yazmadım. Lütfen adım adım ayrıntı verebilir misiniz?

Biraz okuma yapıyorum ve bir siteye tekrar tekrar ping atmanın iyi olup olmadığını bilmek istiyorum. Ping'in öncelikle sorun giderme için kullanıldığı izlenimini edindim.

1
Muhtemelen hayır, bu yüzden kirli;) Tuminoids çözümünü biraz deneyin, DNS sunucuları zahmetli ise işe yaramaz, ancak çoğu durumda çalışması gerekir!
sakjur

Im oldukça acemi ve cevabınızda KİRLİ ne
aldım

1
Temel olarak, beş saniyede bir Google'a bir istek göndererek çalışır ve Google'a ulaşamıyorsanız ağ yöneticisini yeniden başlatır. Kirli çünkü bunu yapmanın iyi bir yolu değil, bunu yapmak için etkili bir yol değil ve sadece bir yerde IP adresinizi bloke eden bir sistem yöneticisi yapabilirsiniz;) (Google'ın bunu yapacağını sanmıyorum, ama çok değil yine de güzel) Oturma ve hala hayatta olup olmadığını görmek için bir kişi alay gibi düşünün;)
sakjur

2

Ağ yöneticisi yerine wicd'i deneyin, benzer bir durum için önerildi: https://bbs.archlinux.org/viewtopic.php?id=124443

Sorunu çözüp çözmeyeceğini veya wicd'in pppoe'yu destekleyip desteklemediğini bilmiyorum.

  1. Aşağıdaki durumlarda .deb dosyalarını yedekleyin:

    sudo apt-get download network-manager network-manager-gnome
    
  2. Ağ yöneticisini temizleme ve wicd'yi yükleme

    sudo apt-get purge network-manager network-manager-gnome
    sudo apt-get install wicd wicd-gtk
    
  3. Yeniden Başlatma. Wicd kullanarak bağlanmayı deneyin.

Bir şeyler ters giderse, wicd'yi temizleyin ve ağ yöneticisini yeniden yükleyin:

sudo apt-get purge wicd wicd-gtk
sudo dpkg -i network-manager*.deb

Çok teşekkürler, medigeek! Üç nokta. Birincisi, archlinux durumunda, OP, wicd'deki değişikliğin sorunu çözüp çözmediğini göndermek için geri dönmedi . İkincisi, bu bir rahatsızlık olsa da, varsayılandan değiştirmek için tereddüt ediyorum. Şimdilik bu takma adı kullanıyorum: alias nm='echo "password" | sudo -S service network-manager restart'geçici bir çözüm olarak. Üçüncüsü, diğer yararlı bağlantılardan, sorunun Ubuntu ile ilgisi yok gibi görünüyor ama "yukarı akış" ve bu yüzden bu sorunun kapatılması gerekip gerekmediğini soracağım.

1
1. nokta için doğru, muhtemelen cevabı silmeliyim, çünkü wicd SSS sayfası wicd sürüm 2.0'a kadar pppoe'yu desteklemeyeceğini söylüyor. 3. nokta için, doğrudan yukarı akış yönünde bir hata dosyalamayı deneyebilirsiniz (pppd veya ağ yöneticisi?)
Savvas Radevic

Sağladığınız fırlatma rampasına kendimi ekledim.

0

Bu sorun için bir komut dosyası yaptım:

#!/bin/bash

for(( ; ; ))
do
VALUE=$(ifconfig | grep ppp0| awk '{print $1}')
        if [ "$VALUE" != "ppp0" ]; then
                {       eval restart network-manager
                        eval sleep 5
                }
        fi
done

Bu iyi çalışıyor ama bu script benim CPU fazla alıyor. Herhangi biri CPU kullanımını azaltmamda bana yardımcı olabilir mi?


Yeni bir soru sormak istiyorsanız, bunun yerine ayrı bir soru olarak sorun. Nasıl
Sorulur

0

Bu soruyu neden cevaplıyorum?

Çok iyi cevaplar var, ama hepsi init veya uptart kullanılarak yazılıyor. Şu andan itibaren systemd kullanacağız, daha iyi bir senaryo ve bilgi yazıyorum. bunun nasıl yapılacağı konusunda.

Ama bir yolu var mı?

Bir yolu var. Ağ durumunuzu izleyen bir komut dosyası oluşturmanız ve istek üzerine Ağ Yöneticisi'ni yeniden başlatmanız yeterlidir. Bu komut dosyasını ve sistemle başlatılacak ve çevrimiçi olup olmadığınızı öğrenmek için her 5 saniyede bir ağ durumunuzu izleyecek bir systemd hizmeti oluşturacağız.

Ne yapmalıyım?

Her şeyden önce, bağlantı testlerinden birini yapmak için fping aracını kurmamız gerekiyor (bir bağlantı mümkünse "fping return" canlı "ve değilse" adres bulunamadı "):

$ sudo apt-get install fping -y

Şimdi sistemimizde monitör komut dosyasını oluşturacağız. / Usr / local / bin / dizininde nm-watcher adlı bir dosya oluşturun:

$ sudo touch /usr/local/bin/nm-watcher

Ve nano'yu veya tercih ettiğiniz metin düzenleyicisini kullanarak düzenleyin:

$ sudo nano /usr/local/bin/nm-watcher

Bu komut dosyasını düzenleyiciye kopyalayıp yapıştırın, dosyayı kaydedin ve kapatın (bu öğreticide olduğu gibi nano kullanıyorsanız "CTRL + X" "Y" ve "ENTER" komutlarını kullanın). Wlan0'ı wm-watcher'ın izlemesini istediğiniz arayüzle değiştirmeyi unutmayın:

#!/bin/bash

while true; do #create a infinite loop to keep looking at your connection
        NET=$(ifconfig wlan0 | grep "inet inet addr:") # verify if the interface has an assigned IP
        ROUTE=$(fping google.com 2>&1 | grep "alive") # try to ping google.com and verify if we have any response
        WEB=$(wget --tries=10 --timeout=20 --spider http://google.com 2>&1 | grep "OK") # spiders google.com to verify if the page exists. returns error if a connections is not possible

        if [ ! "$NET" != "" ] || [ ! "$ROUTE" != "" ] || [ ! "$WEB" != "" ]; then # verify if any of the above conditions aren't OK
                service network-manager restart
        fi

        sleep 5
done

Bu komut dosyasını çalıştırmak için çalıştırılabilir yapmamız gerekir:

$ sudo chmod 755 /usr/local/bin/nm-watcher

Şimdi, SystemD hizmetini yaratacağız, bunun için / etc / systemd / system / adresinde nm-watcher.service dosyasını oluşturmalı ve düzenlemelisiniz:

$ sudo touch /etc/systemd/system/nm-watcher.service && sudo nano /etc/systemd/system/nm-watcher.service

Ve bu içeriği dosyanın içine koyun:

[Unit]
Description=NetworkManager Watcher
Wants=NetworkManager.service
Before=NetworkManager.service

[Service]
ExecStart=/usr/local/bin/nm-watcher

[Install]
WantedBy=multi-user.target

Bu, network-manager.service kullanarak bir bağlantı kurduktan sonra, SystemD'in her önyüklemede oluşturduğumuz komut dosyasını çağırmasını sağlayan hizmet dosyasını oluşturur.

Bu hizmetin aşağıdakileri kullanarak çalışmasını sağladığını bilmeliyiz:

$ sudo systemctl enable nm-watcher.service

Ve şunu yazarak hizmeti başlatın:

$ sudo service nm-watcher start

Hizmetin çalışıp çalışmadığını doğrulamak için şunu yazın:

$ sudo service nm-watcher status

Hizmetle ilgili herhangi bir sorun yaşarsanız, hata ayıklama iletilerini aşağıdakileri kullanarak görebilirsiniz:

$ sudo journalctl -u nm-watcher

Başka bir şey yapmalı mıyım?

Hayır, bu görevi gerçekleştirmek için gereken her şey budur. Bu ekran görüntüsünde gördüğünüz gibi, bu komut dosyasının sistem performansı üzerinde çok düşük bir etkisi vardır:

nm-izleyici ayak izi


0

Eski dizüstü bilgisayarımda bir sürü yük (örneğin, büyük dosyaları indirmek, vb) olsaydı WiFi bağlantısını kesme eğilimi vardı kötü bir WiFi kart vardı.

İnternetimin hala bağlı olup olmadığını kontrol etmek için basit bir komut dosyası oluşturdum ve değilse, ağ yöneticisini yeniden başlatın.

#!/bin/bash

ping -c 1 8.8.8.8
received=$?
echo $received
if [[ $received -ne 0 ]] ; then
    service network-manager restart
fi

Ben bir kök cronjob ile oluşturulan sudo crontab -eve her dakika (daha az sıklıkta yapabilirsiniz, ancak komut dosyası basit bir ping yani kaynak yoğun değil) betiği çalıştırmak öyle ayarlayın.

Yani, eğer benim WiFi herhangi bir nedenle dışarı çıkardı, sadece hiç bir anda yaklaşık bir dakika için dışarı olurdu, tops. Eğer konusunda bilginiz yoksa cron, ben okumayı tavsiye bu

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.