Buat Network Manager restart setelah koneksi terputus?


18

Menggunakan Ubuntu 11.10 (Unity 3D) dan koneksi internet kabel (DSL) tanpa router atau modem.

Jika saya memutuskan koneksi internet saya, saya bisa menghubungkan kembali dengan mengklik ikon manajer jaringan dan memilih koneksi dari menu drop down karena koneksi saya terlihat. Tidak perlu memulai ulang manajer jaringan.

Tetapi setiap kali koneksi internet turun dengan sendirinya , saya telah membuka terminal dan menggunakan sudo service network-manager restartkarena saya tidak melihat koneksi di menu drop down manajer jaringan. Hanya setelah perintah, manajer jaringan kemudian mulai dan terhubung secara otomatis.

Apakah ada beberapa pengaturan sehingga manajer jaringan tidak harus dihidupkan ulang setiap kali koneksi turun (sebagai lawan dari pemutusan saya ketika tidak perlu restart)?

Saya kira dengan kata lain, saya tidak ingin manajer jaringan berhenti selama saya menggunakan komputer, terlepas dari apakah koneksi saya ke ISP terputus atau tidak.

Bukan masalah besar untuk membuka terminal dan mengetik perintah dan kata sandi, tetapi jika ada cara untuk memastikan bahwa manajer jaringan tidak berhenti, itu akan lebih baik.

sunting tertanggal 26 Jan 2012: Baris dari 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

masukkan deskripsi gambar di sini



Silakan coba dua solusi ini: (1) forums.fedoraforum.org/showthread.php?t=229718#2 (2) platonic.techfiz.info/2009/07/28/… - Sayangnya saya tidak memiliki broadband seluler koneksi untuk mencobanya.
Savvas Radevic

@medigeek, bahkan saya tidak memiliki koneksi seluler. Ini koneksi DSL (kabel): kabel yang dihubungkan ke soket tipe telepon. Tidak ada router atau modem intervening di ujung saya.

@ vasa1 putuskan koneksi DSL Anda dan berikan perintah ini di terminal. nmcli con up id "DSL connection 1". Saya tidak punya DSL jadi saya butuh bantuan Anda dengan semua perintah dan output. Komentari keluaran Anda.
Rahul Virpara

berikan hasil:nmcli -t -f TYPE,STATE dev
Rahul Virpara

Jawaban:


16

Berikut ini skrip pemula yang dapat Anda tempatkan untuk /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

Setelah kehilangan alamat ip untuk eth0 (konfigurasikan ke antarmuka Anda jika berbeda), itu akan memulai kembali pekerjaan manajer jaringan dan memulihkan konektivitas.


Ini semua baru bagi saya jadi saya akan menghargai berpegangan tangan. Apakah saya membuat file teks bernama reconnect.conf dan meletakkannya di / etc / init dengan izin "root"? Apakah saya menggunakan kata teks untuk kata? Dalam "Sambungan Jaringan Aktif" saya, saya melihat "Antarmuka: Ethernet (eth0)". Nama koneksi saya adalah "vasa1". Apakah saya membiarkan "inet addr:" apa adanya atau harus saya masukkan nilai? Apakah Ubuntu tahu bahwa file ini harus dibaca? Atau apakah saya harus melakukan sesuatu?

1
Melakukan seperti yang Anda katakan, sebagai root membuat file bernama reconnect.confke /etc/init. Satu-satunya hal yang perlu Anda ubah adalah eth0 ke sesuatu yang lain jika tidak benar. inet addr:bagian hanyalah filter untuk grep dan tidak boleh disentuh. Nama koneksi yang relevan dapat diperiksa melalui ifconfig. Pemula akan membaca file ini secara otomatis dan Anda harus lakukan sudo start reconnectuntuk menyelesaikan pekerjaan. Pada reboot berikutnya akan mulai secara otomatis.
Tuminoid

Baris pertama ifconfigdimulai dengan ethojadi saya akan menggunakannya dan kemudian sudo start reconnectketika koneksi turun. Saya akan memposting kembali dengan hasilnya. Terima kasih!

Saya membuat /etc/init/reconnect.confdan mem-boot ulang. Ketika koneksi saya turun beberapa saat setelah reboot, nm tidak restart. Jadi saya menerbitkan sudo start reconnect. reconnect stop/waitingadalah respons tetapi nm tidak memulai kembali. Saya harus melakukan sudo service network-manager restartapa yang biasanya saya lakukan. Alih-alih restart network-manager, akankah sesuatu seperti restart service network-managerdiminta? (BTW, saya memang meletakkan eth0 dan bukan etho (tidak seperti apa yang ada di komentar saya sebelumnya))

Pada sistem saya, manajer jaringan adalah pekerjaan pemula untuk nm dan perintah di atas berfungsi dengan baik untuk saya, tetapi jangan ragu untuk mengubah perintah mulai ulang untuk apa pun yang berfungsi di sistem Anda, seperti service network-manager restart. Hanya ingin tahu, apa output dari status network-managersistem Anda? Jika itu mengatakan stop/waiting(atau memberikan kesalahan) setelah reboot, Anda perlu mengubah mulai ke sesuatu seperti start on runlevel [2345]dan tambahkan sleep 60sebelumnya sementara.
Tuminoid

2

Solusi cepat dan kotor adalah menulis skrip yang berjalan ping -i 5 google.com || service network-manager restart sebagai root (Anda bisa menulis /etc/init.d/-daemon untuk itu, tetapi karena solusinya SANGAT kotor, saya tidak akan melakukan itu)

Skrip itu akan memulai ulang manajer jaringan setiap kali Google tidak ditemukan dan memeriksa setiap lima detik sekali.


Saya memilih ini meskipun saya tidak mengerti solusinya karena saya belum pernah menulis naskah sebelumnya. Bisakah Anda memberikan detail langkah-bijaksana?

Saya sedang membaca dan ingin tahu apakah boleh melakukan ping berulang kali pada suatu situs. Saya mendapat kesan bahwa ping digunakan terutama untuk pemecahan masalah.

1
Mungkin tidak, itu salah satu alasan mengapa itu kotor;) coba gunakan solusi Tuminoids sedikit, itu tidak berfungsi jika DNS-server itu menyusahkan, tetapi seharusnya bekerja dalam banyak kasus!
sakjur

Saya cukup pemula dan tidak mendapatkan apa yang KOTOR dalam jawaban Anda ..
kernel_panic

1
Pada dasarnya, ini bekerja dengan mengirimkan permintaan ke Google setiap lima detik dan memulai kembali manajer jaringan jika Anda tidak dapat menjangkau Google. Ini kotor karena itu bukan cara yang baik untuk melakukannya, itu bukan cara yang efektif untuk melakukannya dan Anda mungkin membuat sysadmin di suatu tempat memblokir alamat IP Anda;) (Saya tidak berpikir Google akan melakukan itu, tetapi itu tidak terlalu Pokoknya bagus) Anggap itu sebagai duduk dan menusuk seseorang untuk melihat apakah Anda masih hidup;)
sakjur

2

Coba wicd alih-alih pengelola jaringan, disarankan untuk kasus serupa: https://bbs.archlinux.org/viewtopic.php?id=124443

Saya tidak tahu apakah itu akan memperbaiki masalah atau apakah wicd mendukung pppoe.

  1. Cadangkan file deb., Untuk berjaga-jaga:

    sudo apt-get download network-manager network-manager-gnome
    
  2. Bersihkan manajer jaringan dan instal wicd

    sudo apt-get purge network-manager network-manager-gnome
    sudo apt-get install wicd wicd-gtk
    
  3. Mulai ulang. Cobalah untuk terhubung menggunakan wicd.

Jika ada yang salah, cukup bersihkan dan instal ulang pengelola jaringan:

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

Terima kasih banyak, medigeek! Tiga poin. Satu, dalam kasus archlinux, OP belum kembali untuk memposting apakah perubahan ke wicd menyelesaikan masalah. Kedua, sementara itu adalah ketidaknyamanan, saya ragu untuk mengubah dari standarnya. Untuk saat ini, saya menggunakan alias ini: alias nm='echo "password" | sudo -S service network-manager restart'sebagai solusinya. Ketiga, dari tautan membantu Anda yang lain, tampaknya masalah ini tidak ada hubungannya dengan Ubuntu tetapi "upstream" dan saya akan bertanya apakah pertanyaan ini harus ditutup.

1
Benar untuk poin 1, saya mungkin harus menghapus jawabannya, karena halaman FAQ wicd mengatakan itu tidak akan mendukung pppoe hingga wicd versi 2.0. Untuk poin # 3, Anda dapat mencoba mengajukan bug langsung ke hulu (pppd atau network-manager?)
Savvas Radevic

Saya menambahkan diri saya ke bug launchpad yang Anda berikan.

0

Saya telah membuat skrip untuk masalah ini:

#!/bin/bash

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

Ini berfungsi dengan baik tetapi skrip ini mengambil terlalu banyak CPU saya. Adakah yang bisa membantu saya menurunkan penggunaan CPU?


Jika Anda ingin mengajukan pertanyaan baru, maka ajukan itu sebagai pertanyaan terpisah. How to Ask
Aditya

0

Mengapa saya menjawab pertanyaan ini?

Ada jawaban yang sangat bagus, tetapi semua ditulis menggunakan init atau pemula. Mulai sekarang kita akan menggunakan systemd, saya sedang menulis skrip dan info yang lebih baik. tentang cara melakukan itu.

Tetapi apakah ada cara?

Apakah, ada cara. Anda hanya perlu membuat skrip yang memantau keadaan jaringan Anda dan memulai kembali Network Manager sesuai permintaan. Kami akan membuat skrip ini dan layanan systemd yang akan dimulai dengan sistem dan akan memonitor status jaringan Anda setiap 5 detik untuk mengetahui apakah Anda sedang online atau tidak.

Apa yang harus saya lakukan?

Pertama-tama, kita perlu menginstal alat fping untuk membuat salah satu dari tes koneksi (fping return "masih hidup" jika koneksi dimungkinkan dan "alamat tidak ditemukan" jika tidak):

$ sudo apt-get install fping -y

Sekarang kita akan membuat skrip monitor di sistem kita. Buat file di / usr / local / bin / disebut nm-watcher:

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

Dan edit menggunakan nano atau editor teks pilihan Anda:

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

Salin dan tempel skrip ini di dalam editor, simpan dan tutup file (jika Anda menggunakan nano, seperti dalam tutorial ini, gunakan "CTRL + X" "Y" dan "ENTER" secara berurutan). Jangan lupa untuk mengubah wlan0 ke antarmuka yang Anda ingin monitor wm:

#!/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

Untuk menjalankan skrip ini, kita perlu membuatnya dapat dieksekusi:

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

Sekarang, kita akan membuat layanan SystemD, untuk ini, Anda harus membuat dan mengedit file nm-watcher.service di / etc / systemd / system /:

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

Dan letakkan konten ini di dalam file:

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

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

[Install]
WantedBy=multi-user.target

Ini akan membuat file layanan yang membuat SystemD memanggil skrip yang telah kita buat sebelumnya di setiap boot, setelah kita membuat koneksi menggunakan network-manager.service.

Kita harus tahu mengaktifkan layanan ini untuk berjalan menggunakan:

$ sudo systemctl enable nm-watcher.service

Dan mulai layanan dengan mengetik:

$ sudo service nm-watcher start

Untuk memverifikasi apakah layanan sedang berjalan ketik:

$ sudo service nm-watcher status

Jika Anda memiliki masalah dengan layanan ini, Anda dapat melihat pesan debug menggunakan:

$ sudo journalctl -u nm-watcher

Haruskah saya melakukan hal lain?

Tidak, ini yang dibutuhkan untuk menyelesaikan tugas ini. Skrip ini memiliki dampak yang sangat rendah pada kinerja sistem, seperti yang dapat Anda lihat di tangkapan layar ini:

nm-watcher footprint


0

Pada laptop lama saya, saya memiliki kartu WiFi yang buruk yang cenderung memutuskan koneksi dari WiFi jika ada banyak beban (misalnya, mengunduh file besar, dll.).

Saya membuat skrip sederhana untuk memeriksa apakah internet saya masih terhubung, dan jika tidak, maka restart manajer jaringan.

#!/bin/bash

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

Saya membuat cronjob root dengan sudo crontab -e , dan mengaturnya sedemikian rupa sehingga setiap menit (Anda bisa melakukannya lebih jarang, tetapi skripnya adalah ping sederhana sehingga tidak membutuhkan banyak sumber daya) ia akan menjalankan skrip.

Jadi, jika WiFi saya keluar karena suatu alasan, itu hanya akan keluar selama sekitar satu menit pada suatu waktu, puncak. Jika Anda belum terbiasa cron, saya sarankan membaca ini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.